DockerのストレージとしてZFSを使用して、Ubuntu 16.04でDocker CEを使用しています。セットアップはかなり標準的です:
/var/lib/docker
を持つzfsファイルシステムがあります。ほとんどの場合、すべてが機能します。ただし、ときどきmy VMが起動すると、zpoolがマウントに失敗します。100%確実ではありませんが)これは、DockerサービスがZFSファイルシステムの前に開始されるためであると考えていますマウントされており、実際にルートFSに/var/lib/docker
フォルダーが作成されています。
すべてのZFSファイルシステムがマウントされるまでDockerサービスが開始されないようにするにはどうすればよいですか?
私はこれを2つのことで解決することができました。 1つだけで十分な場合があります。
まず、{"storage-driver": "zfs"}
ファイルに/etc/docker/daemon.json
と書き込んで、ファイルシステムとしてZFSを使用するようにDockerに明示的に指示します。 (ファイルがディスクに存在する場合は、ストレージドライバキーを追加するだけです)
次に、/etc/systemd/system/docker-wait-zfs.service
ファイルに次のsystemdユニットを作成します。
[Unit]
Description=Wait for ZFS before starting Docker
RequiredBy=docker.service
Before=docker.service
Requires=zfs.target
After=zfs.target
[Service]
Type=oneshot
ExecStart=/bin/true
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
次に実行します:
systemctl enable docker-wait-zfs.service