Docker イメージが一致しません。

Docker イメージが一致しません。

Docker イメージは変更不可能でなければなりませんが、そのうちの 1 つを別のシステムにインポートすると異なる動作をします。

エラーを再現するために、debootstrapで構築されたdebian-wheezyイメージから始めましょう。

Dockerfileを使用して画像を構築します。

FROM debian-wheezy
RUN apt-get install -y fail2ban
RUN rm /var/run/fail2ban/fail2ban.sock

最後のコマンドは、次回の起動時にfailure2banがクラッシュするのを防ぎます。何らかの理由でDockerfileで手動でサービスを停止しても、ソケットファイルはfailure2banをインストールした後もそのまま残ります。ファイルがまだ存在する場合、Fail2ban を再起動できません。

画像を起動してFail2banを起動すると成功します。内容を確認できます。/var/run/fail2banリポジトリ:

$ docker build -t test/fail2ban .
$ docker run test/fail2ban ls /var/run/fail2ban
fail2ban.pid

ただし、画像をエクスポートして別のコンピュータにインポートする場合:

$ docker save test/fail2ban > /tmp/fail2ban.tar
$ scp /tmp/fail2ban.tar user@machine:/tmp
$ ssh user@machine "cat /tmp/fail2ban.tar | docker load"
$ ssh user@machine docker run test/fail2ban ls /var/run/fail2ban
fail2ban.pid
fail2ban.sock

今回はソケットファイルがあり、サービスを開始できません。

誰かがこの動作とトラブルシューティング方法を説明できますか?

詳細は次のとおりです。

$ uname -a
Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux
$ docker --version
Docker version 1.6.0, build 4749651
$ ssh user@machine uname -a
Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1 x86_64 GNU/Linux
$ ssh user@machine docker --version
Docker version 1.6.0, build 4749651

関連情報