コンテナの作成・起動
-
コンテナの作成・起動
コンテナを作成して起動する場合、runコマンドを使用します。 runコマンドの形式は以下のようになります。
docker run [オプション] イメージ[:タグ|@ダイジェスト値] [コマンド] [引数...]
通常はいくつかのオプションを指定する必要があります。 そのため、以下のように各環境にあったオプションを指定します。
# docker run -itd -h dbserver -p 8080:80 -v /var/www:/var/www --name dbserver docker.io/centos:6 /bin/bash
起動後、稼動しているコンテナを確認するpsコマンドを実行すると、以下のようになります。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e78bdb0c4d17 docker.io/centos:6 "/bin/bash" 43 seconds ago Up 42 seconds 0.0.0.0:8080->80/tcp dbserver
参考
コンテナの作成
runコマンドは、コンテナを作成して起動しますが、createコマンドは停止状態のコンテナ作成を行います。 createコマンドで作成して、startコマンドで起動すると、runコマンドと同じ動作となります。
オプションは-dオプション以外、runコマンドと同じになります。
runコマンドのオプション
runコマンドのオプションについて
-
コンテナの名前指定
-
バックグラウンド(デタッチド・モード)で動作させる
--nameオプションで、コンテナの名前を指定できます。 指定しないと、dockerが適当な名前をつけます。
# docker run -itd my:test
f4332b9f2b019a63579aae02858c8de3a6a02efc24ead1915feddf8a9c1a4e70
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4332b9f2b01 my:test "/usr/local/bin/init." 3 seconds ago Up 2 seconds insane_brahmagupta
バックグラウンド(デタッチド・モード)で動作させる場合は、オプションの"-d"か、"-d=true"を指定します。 このオプションは"-i"や"-t"オプションとまとめて"-itd"と指定することが可能です。
# docker run -itd -v /var/www:/var/www docker.io/centos:6 /bin/bash
注意. runコマンドのオプションで実行コマンド(上記ではオプションの最後"/bin/bash")を指定すると、DockerfileのCMDで指定したコマンドは実行されません。
ポートフォワードでコンテナ外部からアクセス
TCP/IPでコンテナ外からコンテナにアクセスする場合、ポートフォワードを使う必要があります。 その場合、オプション"-p"で、[外部へ公開するポート番号]:[コンテナ側のポート番号]を指定します。
例えば、ホスト側の8080にアクセスを、コンテナの80番ポートへ転送する場合、以下のように指定します。
# docker run -itd -h dbserver -p 8080:80 docker.io/centos:6 /bin/bash
共有ディレクトリの指定
コンテナに共有ディレクトリを指定する場合、"-v"オプションで指定します。 指定は、[共有元パス]:[コンテナ内パス] で行います。以下の例では/var/srcがホスト側、/var/desがコンテナ内になります。
# docker run -itd -v /var/src:/var/des docker.io/centos:6 /bin/bash
書き込み禁止(Read-Onlyモード)にする場合は、パスの指定後に":ro"を付けます。デフォルトは書き込み許可(Read-Writeモード)で、 ":rw"が付いたのと同じになります。
# docker run -itd -v /var/www:/var/www:ro docker.io/centos:6 /bin/bash
Vagrantを使用している場合、Vagrantの共有ディレクトリをこのオプションで指定すると、ファイル共有が楽になります。 Vagrantでは、Vagrantfileのあるディレクトリが仮想マシンの/vagrantディレクトリとして共有されます。 そのため、-vオプションで/vagrant:/vagrantと指定してrunコマンドを実行すると、ホストOS、仮想マシンのホストLinux、その上で動作しているコンテナが1つのディレクトリを共有します。
# docker run -itd -v /vagrant:/vagrant docker.io/centos:6 /bin/bash
ホスト名の指定
指定したホスト名にする場合は、"-h"オプションで指定します。
# docker run -itd -h dbserver docker.io/centos:6 /bin/bash
ホスト名を指定すると、プロンプトにホスト名が表示されますので、複数のコンテナを動作させている場合は指定した方が分かりやすくなります。 ホスト名にdbserverと指定した場合、以下のように表示されます。
[root@dbserver /]#
ホスト名を指定しないと、コンテナIDがホスト名になります。"aec32698405e"がコンテナIDの場合、以下のようになります。
[root@aec32698405e /]#
/etc/hostsにホスト情報を追加
コンテナ内の/etc/hostsファイルを編集しても、コンテナを再起動すると変更は消えてしまいます。 /etc/hostsに追加したい情報は、"--add-host"オプションで指定します。 複数追加する場合は、各ホスト情報ごとに"--add-host"で指定します。
# docker run -itd --add-host=proxy.example.com:127.0.0.1 --add-host=www.example.com:127.0.0.1 docker.io:centos:6 testsvr
コンテナでコマンド実行後、コンテナを自動破棄する
"--rm"オプションを指定すると、コンテナを起動して指定のコマンド実行し、コマンド終了後にコンテナを自動で破棄します。
# docker run -it -rm my:mysql /etc/my.cnf