【事象】
テスト環境で運用しているコンテナを作成する際、下記のようなメッセージが出た。
流れとしては、古いコンテナ(test1)を停止削除し、再度、同じコンテナ名(test1)で再作成した際、叱られた。
作成時コンテナ名を変えればOKなメッセージですが、運用しているテスト環境は、コンテナ名をサブドメインにしてブラウザアクセス等もテストしている環境のため、命名規則を破るわけにはいかない。
激おこメッセージ
ubuntu@HOST Server:~$ docker run -d -h test1 --name test1 -p 22 CountainerImage:Tag
docker: Error response from daemon: Conflict. The container name "/test1" is already in use by container 4f8893e6568ae9376e652a61ea2c64145c3cd3891aaacc092da83b4a68541c33. You have to remove (or rename) that container to be able to reuse that name..
See 'docker run --help'.
めっちゃConflictしている...。
コンテナ名は既に使われてるから、既存のものを別名にするかどうにかしなさいとのこと。
【解決】
応急処置ですが、コンテナがマウントしているファイルシステムをmvし、再度同じコンテナ名で作成したら無事作成できました。
・ファイルシステムをmvしてみる。
ubuntu@HOST Server:~$ sudo mv /var/lib/docker/containers/4f8893e6568ae9376e652a61ea2c64145c3cd3891aaacc092da83b4a68541c33 /var/tmp/
・同じコンテナ名で再作成
ubuntu@HOST Server:~$ docker run -d -h test1 --name test1 -p 22 CountainerImage:Tag
→キマった
【解決の前に確認したこと】
応急処置的な解決の前に確認したことは、3つです。
1.SwarmOverLayNetworkからの分離を確認
2.OS側でのmountのprocを確認
3.凡ミス確認
今回怖かったのは、ネットワーク分離もdocker stopもdocker rmもやったうえでこのメッセージが吐かれてしまったこと。
デーモンが掴んじゃってるんだろうけど、実は根元のホストも再起動
したうえでのこのメッセージだったのです...。
:;(∩´﹏`∩);:
・SwarmOverLayNetworkを確認
調べたところ、Swarmで構成されたコンテナ群でのトラブルは、コンテナをSwarmOverLayNetworkから切り離しを忘れていた場合、デーモンが掴んでしまって発生することが多いとのこと。
停止・削除前に紐づいていたネットワークは(test)でした。
ネットワークを確認
docker network inspect test | grep test1
→外れてい~る。
・OSでマウントがされてる!?
一回再起動しはしたけれど、OS情報でメモリが掴んじゃっているんだろうかという疑問。
cat /proc/mount| grep <該当コンテナのファイルシステム>
→いない。
・凡ミス?
もしかして停止だけで削除は忘れていた?
docker ps -a
いない
(ФДФ)
【解決の前にトライしたこと】
ファイルシステムをunmountして解決している人もいたので、真似てみました。
・手動でunmount
ubuntu@HOST Server:~$ sudo umount /var/lib/docker/containers/4f8893e6568ae9376e652a61ea2c64145c3cd3891aaacc092da83b4a68541c33
sudo: unable to resolve host HOST Server
umount: /var/lib/docker/containers/4f8893e6568ae9376e652a61ea2c64145c3cd3891aaacc092da83b4a68541c33: not mounted
→そんなファイルシステムはいないといわれる。
今回は、ファイルシステムをMVするで応急処置しましたが、もし本当の解決策があれば、コメント下さい~。
【詳細】
Docker Basics Webinar Q&A: Understanding Union Filesystems, Storage and Volumes
https://blog.docker.com/2015/10/docker-basics-webinar-qa/
dockerが使うUnionFileSystemを僕なりに解釈した - See the Elephant
https://namu-r21.hatenablog.com/entry/2016/10/27/013006