web-dev-qa-db-ja.com

DockerサービスはZFSの前に開始します

DockerのストレージとしてZFSを使用して、Ubuntu 16.04でDocker CEを使用しています。セットアップはかなり標準的です:

  1. 複数のディスクを持つzpoolがあります
  2. Zpoolには、マウントポイント/var/lib/dockerを持つzfsファイルシステムがあります。
  3. DockerはファイルシステムがZFSであることを認識し、それを自動的に使用します

ほとんどの場合、すべてが機能します。ただし、ときどきmy VMが起動すると、zpoolがマウントに失敗します。100%確実ではありませんが)これは、DockerサービスがZFSファイルシステムの前に開始されるためであると考えていますマウントされており、実際にルートFSに/var/lib/dockerフォルダーが作成されています。

すべてのZFSファイルシステムがマウントされるまでDockerサービスが開始されないようにするにはどうすればよいですか?

6
ItalyPaleAle

私はこれを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
7
ItalyPaleAle