Dockerでサービス設定

Dockerサービスの設定ファイル

何が正解かを見つけるのは道半ば。自信のない個所や試せてない箇所も多い。

設定ファイルはsystemctlで確認できる。
/lib/systemd/system/docker.serviceって書いてある。

# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)

 : (省略)

書き換えたら、必ず実行必要。でもいつも忘れる。

# systemctl daemon-reload

Dockerでサービス停止するときにsocketのメッセージ

docker利用環境をcent8からubuntu20に引っ越した頃、systemctlでサービス停止するときに「ソケットまだ生きてんでー」みたいなメッセージが出るようになった。

Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

とりあえずコンフィグレーションコメント化。

修正前)Requires=docker.socket containerd.service
修正後)# Requires=docker.socket containerd.service

あとは”-H fd://”を外す。

修正前)ExecStart=/usr/bin/dockerd -H fd:// –containerd=/run/containerd/containerd.sock -g /docker/nariDockerSys
修正後)ExecStart=/usr/bin/dockerd –containerd=/run/containerd/containerd.sock -g /docker/nariDockerSys

systemctlでデーモンの設定反映させる。

systemctl daemon-reload
systemctl stop docker.service
systemctl start docker.service

これでdockerのサービス停止のときにメッセージでなくなった。
コンテナも普通に使えてる。

Dockerでコンテナの置き場を指定

rootパーティションにはOS以外のデータ置きたくない。
dockerは何も指定しないと、/var/libの中にデータ置きはじめる。
/var/lib/dockerをソフトリンクさせてみたことあったけど、挙動不審になってうまくいかなかった。

# pwd
/var/lib/docker
# ls -l
合計 48
drwx------ 2 root root 4096 11月 28 04:48 builder
drwx--x--x 4 root root 4096 12月 12 04:17 buildkit
drwx-----x 2 root root 4096 12月 15 03:39 containers
drwx------ 3 root root 4096 11月 28 04:48 image
drwxr-x--- 3 root root 4096 11月 28 04:48 network
drwx------ 3 root root 4096  3月  5 05:28 overlay2
drwx------ 4 root root 4096 11月 28 04:48 plugins
drwx------ 2 root root 4096  3月  5 05:28 runtimes
drwx------ 2 root root 4096 11月 28 04:48 swarm
drwx------ 2 root root 4096  3月  5 05:28 tmp
drwx------ 2 root root 4096 11月 28 04:48 trust
drwx-----x 4 root root 4096  3月  5 05:28 volumes
#

勝手に置き場作られると、dockerがコンテナでどれぐらい消費しているのかわからなくなる。docker rmやdocker rmiしてもいくらか容量は残り続けるようなので、気分一新して完全抹消したいときはdockerサービスを停止してから、フォルダごと抹消したらいい。

cent8からubuntu20に引っ越した時コンテナ全部作り直したら、このフォルダの消費量が半分以下になってくれてメチャすっきりした。

このフォルダはコンテナ作成すると消費されるので、抹消してもビルドしなおしたら作り直される。だから日々のバックアップは取らず、docker-compose.ymlで指定する永続化領域だけをバックアップ対象にする。

Google cloudで使ってるubuntuはrootパーティション小さく使っているので、勝手に/var/lib/docker使われると困る。

そこでコンテナの置き場を/docker/nariDockerSysに指定。
今は-gじゃなくて–data-rootって指定するらしい。

修正前)ExecStart=/usr/bin/dockerd –containerd=/run/containerd/containerd.sock
修正後)ExecStart=/usr/bin/dockerd –containerd=/run/containerd/containerd.sock –data-root /docker/nariDockerSys

残念なのは、aptでdockerのバージョンが上がると、このファイル初期化されてしまう。

手動で書き換えるの面倒。
ま、ときどき点検したいから手動で書き換えることにする。

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
# Requires=docker.socket containerd.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock --data-root /docker/nariDockerSys

 : (省略)

コメント