1. RyoMa_0923

    Posted

    RyoMa_0923
Changes in title
+Dockerイメージの格納先変更
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,168 @@
+
+
+Ubuntuでインストールしたdockerはデフォルトでは/var/lib/docker配下にイメージを格納します。
+
+とは言うでも/var/lib/dockerのマウントしてるボリュームサイズそんなに大きくないよ!なんてことあると思います。
+
+その変更方法。(とハマった部分)
+
+
+
+# (失敗例) /etc/defaults/dockerを変更
+
+## dockerの向き先の変更
+dockerの各種ファイルの格納先を変更するには、
+/etc/defaults/dockerを編集するらしい。
+
+DOCKER_OPTSを変更すればよし。
+
+```Bash:/etc/defaults/dockerの変更内容
+DOCKER_OPTS="-g /opt/docker"
+```
+
+## 変更の反映
+
+```Bash:変更の反映
+sudo systemctl restart docker
+```
+
+よし、これで... **反映されてない**。
+
+## そして失敗
+
+/etc/defaults/dockerファイルを見てみるとこんな記述が。
+
+```txt:dockerファイルの記述
+#
+# THIS FILE DOES NOT APPLY TO SYSTEMD
+#
+# Please see the documentation for "systemd drop-ins":
+# https://docs.docker.com/engine/articles/systemd/
+#
+```
+
+はい、死んだ。:cry:
+systemdではこのファイルは読まれませんとの注意書きが...... :skull:
+
+# (成功例) docker.serviceを変更
+
+じゃあ、systemdからdockerのプロセス立ち上げるときに
+設定を入れればいいよねということで、systemdからdockerプロセス
+を立ち上げる際の設定を確認する。
+
+そもそもsystemdのdockerプロセス立ち上げの設定がどこにあるのか分からないので、まずはそこから探してみる。
+
+systemdのdocker.serviceの設定を覗いてみる。
+
+```Bash:docker.serviceの状態
+sudo systemctl status docker
+● docker.service - Docker Application Container Engine
+ Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
+ Active: active (running) since Sun 2016-07-10 09:52:28 UTC; 20min ago
+ Docs: https://docs.docker.com
+ Main PID: 2061 (docker)
+ Tasks: 17
+ Memory: 14.5M
+ CPU: 685ms
+ CGroup: /system.slice/docker.service
+ ├─2061 /usr/bin/docker daemon -H fd://
+ └─2068 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
+
+```
+
+設定ファイルは/lib/systemd/system/docker.serviceにあるみたい。
+
+## docker.serviceの中身
+
+```ini:docker.service
+[Unit]
+Description=Docker Application Container Engine
+Documentation=https://docs.docker.com
+After=network.target docker.socket
+Requires=docker.socket
+
+[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/docker daemon -H fd://
+MountFlags=slave
+LimitNOFILE=1048576
+LimitNPROC=1048576
+LimitCORE=infinity
+TimeoutStartSec=0
+# set delegate yes so that systemd does not reset the cgroups of docker containers
+Delegate=yes
+
+[Install]
+WantedBy=multi-user.target
+```
+
+ExecStartの設定を変えると良さそう。
+ということで変更。
+
+```ini:docker.service(変更後)
+[Unit]
+Description=Docker Application Container Engine
+Documentation=https://docs.docker.com
+After=network.target docker.socket
+Requires=docker.socket
+
+[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/docker daemon -H fd:// -g /opt/docker
+MountFlags=slave
+LimitNOFILE=1048576
+LimitNPROC=1048576
+LimitCORE=infinity
+TimeoutStartSec=0
+# set delegate yes so that systemd does not reset the cgroups of docker containers
+Delegate=yes
+
+[Install]
+WantedBy=multi-user.target
+```
+
+```Bash:docker再起動
+sudo systemctl restart docker
+```
+
+```Bash:出力メッセージ
+Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
+```
+
+
+...そーいや、systemdの構成ファイル変更したらsystemctl daemon-reloadいるんでした。
+
+```Bash:docker再起動(正しい版)
+sudo systemctl daemon-reload
+sudo systemctl restart docker
+```
+
+特に何もなくプロンプトが戻ってきた。
+
+```Bash:dockerプロセスの状態確認
+ps -ef | grep docker
+
+root 2891 1 3 10:23 ? 00:00:00 /usr/bin/docker daemon -H fd:// -g /opt/docker
+root 2899 2891 0 10:23 ? 00:00:00 docker-containerd -l /var/run/docker/libcontainerd/docker-containerd.sock --runtime docker-runc --start-timeout 2m
+ubuntu 2955 1465 0 10:23 pts/0 00:00:00 grep --color=auto docker
+```
+
+ちゃんと指定した部分が反映されている。よかった。
+
+念のため、-gで指定したディレクトリの中も覗いてみる。
+
+```Bash:/opt/dockerディレクトリのチェック
+ls /opt/docker
+aufs containers image network tmp trust volumes
+```
+
+/var/lib/docker配下と同等のディレクトリ構成が確認できた。
+多分これでいいはず。
+
+**イメージ以外の部分も変更されちゃってるけどそこは勘弁してください。**