1. コンテナの作成・起動
  2. runコマンドのオプション

コンテナの作成・起動

  • コンテナの作成・起動

  • コンテナを作成して起動する場合、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が適当な名前をつけます。

    例 --nameオプション無しでのrunコマンド。dockerが、"insane_brahmagupta"という名前をつけています。
    # 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"オプションを指定すると、コンテナを起動して指定のコマンド実行し、コマンド終了後にコンテナを自動で破棄します。

    例 Dockerfileのテストなどで、作成したコンテナのファイルを確認するような場合は、コンテナの停止、削除処理が省けます。
    # docker run -it -rm my:mysql /etc/my.cnf