Docker の設定と実行

Docker のインストールに成功したら、 docker デーモンはデフォルトの設定で動いています。

プロダクション環境では、システム管理者は組織における必要性に従い、 docker デーモンの設定を変更し、起動・停止するでしょう。ほとんどの場合、システム管理者は docker デーモンの起動\停止のために SysVinitUpstartsystemd といったプロセス・マネージャを設定するでしょう。

docker デーモンを直接実行

docker デーモンは docker daemon コマンドで直接操作できます。デフォルトでは Unix ソケット unix:///var/run/docker.sock をリッスンします。

$ docker daemon

INFO[0000] +job init_networkdriver()
INFO[0000] +job serveapi(unix:///var/run/docker.sock)
INFO[0000] Listening for HTTP on unix (/var/run/docker.sock)
...
...

docker デーモンを直接設定

プロセス・マネージャの代わりに、docker daemon コマンドを使って docker デーモンを直接実行できます。 docker をコマンドで直接実行時に、オプション設定を追加可能です。 docker デーモンを設定するための他のオプションも追加できます。

デーモンで利用可能なオプション:

フラグ 説明
-D , --debug=false デバッグ・モードの有効化と無効化。デフォルトは false
-H , --host=[] デーモンが接続するソケット
--tls=false TLS の有効化と無効化。デフォルトは false

以下は docker デーモンに設定オプションを付けて実行する例です。

$ docker daemon -D --tls=true --tlscert=/var/docker/server.pem    --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376

3つのオプションがあります:

  • -D (デバッグ)モードの有効化
  • tls を有効にするため、サーバ証明書と鍵を --tlscert--tlskey で個々に指定
  • tcp://192.168.59.3:2376 への接続をリッスン

デーモンのフラグ一覧 にコマンドライン・リファレンスと説明があります。

Ubuntu

14.04 から、Ubuntu はプロセス・マネージャに Upstart を使います。デフォルトでは、Upstart のジョブは /etc/init に保管され、 docker Upstart ジョブは /etc/init/docker.conf にあります。

Ubuntu で Docker のインストール に成功すると、Upstart を使って稼働状態を確認するには、次のようにします。

$ sudo status docker
docker start/running, process 989

コンテナの実行

docker デーモンは次のように開始・停止・再起動できます。

$ sudo start docker

$ sudo stop docker

$ sudo restart docker

Docker の設定

システム上にある docker デーモンの設定は、 /etc/default/docker ファイルを編集します。ここに DOCKER_OPTS 環境変数を指定可能です。

Docker オプションの設定を変更するには:

  1. ホストに sudoroot 特権を持つユーザでログインします。
  1. ホスト上に /etc/default/docker ファイルがなければ咲く壊死します。Docker のインストール方法によっては、既にファイルが作成されている場合があります。
  1. 任意のエディタでファイルを開きます。
$ sudo vi /etc/default/docker
  1. DOCKER_OPTS 変数に、次のオプションを指定します。これらのオプションは docker デーモンを実行する時に追加されるものです。
DOCKER_OPTS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"

これらのオプションの意味は:

  • -D (デバッグ)モードの有効化
  • tls を有効にするため、サーバ証明書と鍵を --tlscert--tlskey で個々に指定
  • tcp://192.168.59.3:2376 への接続をリッスン

デーモンのフラグ一覧 にコマンドライン・リファレンスと説明があります。

  1. ファイルを保存して閉じます。
  1. docker デーモンを再起動します。
$ sudo restart docker
  1. docker デーモンが指定したオプションで実行しているか、 ps コマンドで確認します。
$ ps aux | grep docker | grep -v grep

ログ

Upstart ジョブのログは、デフォルトでは /var/log/upstart に保管されており、 docker デーモンのログは /var/log/upstart/docker.log にあります。

$ tail -f /var/log/upstart/docker.log
INFO[0000] Loading containers: done.
INFO[0000] docker daemon: 1.6.0 4749651; execdriver: native-0.2; graphdriver: aufs
INFO[0000] +job acceptconnections()
INFO[0000] -job acceptconnections() = OK (0)
INFO[0000] Daemon has completed initialization

CentOS / Red Hat Enterprise Linux / Fedora

CentOS と RHEL の 7.x 以降では、プロセス・マネージャに systemd を使います。Fedora 21 以降は、プロセス・マネージャに systemd を使います。

CentOSRed Hat Enterprise LinuxFedora に Docker をインストール後は、次のように稼働状態を確認できます。

$ sudo systemctl status docker

Docker の実行

docker デーモンを次のように開始・停止・再起動できます。

$ sudo systemctl start docker

$ sudo systemctl stop docker

$ sudo systemctl restart docker

Docker をブート時に起動するようにするには、次のように実行すべきです。

$ sudo systemctl enable docker

Docker の設定

システム上にある docker デーモンの設定は /etc/default/docker ファイルを編集します。ここで様々な変数を設定します。CentOS 7.x と RHEL 7.x では、この変数名が OPTIONS になります。CentOS 6.x と RHEL 6.x では、この変数名は other_args です。このセクションでは CentOS 7 を例にした docker デーモンを説明します。

デフォルトでは、systemd サービスは /etc/systemd/service/lib/systemd/system/usr/lib/systemd/system にあります。 docker.service ファイルはホストに依存して、いすれかのディレクトリに置かれています。

Docker オプションの設定を変更するには:

  1. ホストに sudoroot 特権を持つユーザでログインします。
  1. ホスト上に /etc/default/docker ファイルがなければ咲く壊死します。Docker のインストール方法によっては、既にファイルが作成されている場合があります。
  1. 任意のエディタでファイルを開きます。
$ sudo vi /etc/sysconfig/docker
  1. OPTIONS 変数に、次のオプションを指定します。これらのオプションは docker デーモンを実行する時に追加されるものです。
OPTIONS="-D --tls=true --tlscert=/var/docker/server.pem --tlskey=/var/docker/serverkey.pem -H tcp://192.168.59.3:2376"

これらのオプションの意味は:

  • -D (デバッグ)モードの有効化
  • tls を有効にするため、サーバ証明書と鍵を --tlscert--tlskey で個々に指定
  • tcp://192.168.59.3:2376 への接続をリッスン

デーモンのフラグ一覧 にコマンドライン・リファレンスと説明があります。

  1. ファイルを保存して閉じます。
  1. docker デーモンを再起動します。
$ sudo systemctl restart docker
  1. docker デーモンが指定したオプションで実行しているか、 ps コマンドで確認します。
$ ps aux | grep docker | grep -v grep

ログ

systemd has its own logging system called the journal. The logs for the docker daemon can be viewed using journalctl -u docker

systemd は自身で journal と呼ばれるロギング・システムを持っています。 docker デーモンのログを表示するには journalctl -u docker を使います。

$ sudo journalctl -u docker
May 06 00:22:05 localhost.localdomain systemd[1]: Starting Docker Application Container Engine...
May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="+job serveapi(unix:///var/run/docker.sock)"
May 06 00:22:05 localhost.localdomain docker[2495]: time="2015-05-06T00:22:05Z" level="info" msg="Listening for HTTP on unix (/var/run/docker.sock)"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job init_networkdriver()"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job init_networkdriver() = OK (0)"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: start."
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="Loading containers: done."
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="docker daemon: 1.5.0-dev fc0329b/1.5.0; execdriver: native-0.2; graphdriver: devicemapper"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="+job acceptconnections()"
May 06 00:22:06 localhost.localdomain docker[2495]: time="2015-05-06T00:22:06Z" level="info" msg="-job acceptconnections() = OK (0)"

注釈

journal の使い方や設定方法は高度なトピックのため、この記事の範囲では扱いません。