以前にやったDockerに接続する際にTLSを使っての接続をするためにサーバー側の設定をしたけどこれ/usr/lib/systemd/system/docker.serviceとかに書くのはどうなの?っていう話

Dockerdの設定ファイルに関して

  1. /usr/lib/systemd/system/docker.serviceのExecStartに記述する方法(場合によって場所が異なる)

  2. /etc/docker/daemon.jsonに記述する方法

1の場合だとDockerがアップデートしたりしてしまった場合に設定が初期化されてしまうため問題になる場合もある。一応公式的には基本的なものに関しては2の方式で設定するのがいいっぽい?ただしdaemon.jsonで設定できないのもあるらしいので

/etc/docker/daemon.json

{
  "hosts": [ "tcp://0.0.0.0:2376" ],
  "tlsverify": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server-cert.pem",
  "tlskey": "/etc/docker/server-key.pem"
}

今までは/usr/lib/systemd/system/docker.serviceのExecStartにオプションを追加してTLS関連設定をしていたが/etc/docker/daemon.jsonでも設定は可能

ただし、hostsに関してはdaemon.jsonで記述したうえで/usr/lib/systemd/system/docker.serviceでも-Hオプションを使用していたりするとDockerdの起動に失敗する。なのでそういう場合には以下を設定する

systemd/dockerの設定

  1. /usr/lib/systemd/system/docker.serivce.dディレクトリを作る

  2. /usr/lib/systemd/system/docker.service.d/docker.confファイルを以下のように作成

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd

まとめ

Docker Daemonの設定するときは可能な限りは/etc/docker/daemon.jsonで設定する方がいいっぽい?

hostsと-Hの設定を共存するには別途なsystemd側の設定が必要