systemd における Docker の設定と管理¶
Linux ディストリビューションでは、Docker デーモンの起動に systemd を用いるものが多くあります。 このドキュメントでは Docker の設定例をいくつか示します。
Docker デーモンの起動¶
手動で起動する場合¶
Docker をインストールしたら Docker デーモンを起動する必要があります。
たいていの Linux ディストリビューションでは systemctl
を使ってサービスを起動します。
systemctl
がない場合は service
コマンドを使ってください。
systemctl
の場合$ sudo systemctl start docker
service
の場合$ sudo service docker start
システムブート時に自動起動する場合¶
Docker をシステムブート時に起動したい場合は システムブート時の Docker 起動設定 を参照してください。
Docker デーモンオプションのカスタマイズ¶
Docker デーモンに対してのデーモンフラグや環境変数を設定する方法はいろいろあります。
推奨されるのは、プラットフォームに依存しない daemon.json
ファイルを用いる方法です。
この daemon.json
ファイルは Linux においてはデフォルトで /etc/docker/
に置かれます。
詳しくは デーモン設定ファイル を参照してください。
daemon.json
を使うと、デーモン・オプションはほぼすべて設定することができます。
以下の例では 2 つのオプションを設定しています。
daemon.json
による仕組みで設定できないものに HTTP プロキシ があります。
実行時の利用ディレクトリとストレージ・ドライバ¶
Docker のイメージ、コンテナー、ボリュームは、別のパーティションを使ってディスク管理を行いたいと考えるかもしれません。
これを行うには daemon.json
ファイルにおいて、以下のようなフラグ設定を行います。
{
"graph": "/mnt/docker-data",
"storage-driver": "overlay"
}
HTTP/HTTPS プロキシ¶
Docker デーモンではその起動環境において HTTP_PROXY
, HTTPS_PROXY
, NO_PROXY
という環境変数を利用して、HTTP または HTTPS プロキシの動作を定めています。
この環境変数による設定は daemon.json
ファイルを用いて行うことはできません。
以下は、デフォルトの docker.service
ファイルを上書き設定する例です。
企業内で設定されるような HTTP あるいは HTTPS プロキシサーバを利用している場合は、Docker systemd サービスファイルに、これらの設定を加える必要があります。
- Docker サービスに対応した systemd のドロップイン・ディレクトリを生成します。
$ mkdir -p /etc/systemd/system/docker.service.d
/etc/systemd/system/docker.service.d/http-proxy.conf
というファイルを生成して、そこに環境変数HTTP_PROXY
の設定を書きます。
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80/"また HTTPS プロキシサーバを利用している場合には
/etc/systemd/system/docker.service.d/https-proxy.conf
というファイルを生成して、そこに環境変数HTTPS_PROXY
の設定を書きます。[Service] Environment="HTTPS_PROXY=https://proxy.example.com:443/"
- 内部に Docker レジストリがあって、プロキシを介さずに接続する必要がある場合は、環境変数
NO_PROXY
を通じて設定することができます。
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"また HTTPS プロキシサーバであれば以下のようになります。
Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
- 設定を反映します。
$ sudo systemctl daemon-reload
- Docker を再起動します。
$ sudo systemctl restart docker
- 設定がロードされていることを確認します。
$ systemctl show --property=Environment docker Environment=HTTP_PROXY=http://proxy.example.com:80/HTTPS プロキシサーバの場合は以下のとおりです。
$ systemctl show --property=Environment docker Environment=HTTPS_PROXY=https://proxy.example.com:443/
systemd ユニットファイルの手動作成¶
パッケージを利用せずにインストールを行った場合は、systemd を用いた Docker の設定が必要になるはずです。
これを行うには 2 つのユニットファイル(service
と socket
)を Github リポジトリ から入手して /etc/systemd/system
に置いてください。
参考
- Control and configure Docker with systemd
- https://docs.docker.com/engine/admin/systemd/