Dockerコンテナの起動・削除エラーを解決!Conflict(名前の競合)の原因と対処法
DockerはLXC技術をベースとしたOSレベルの仮想化プラットフォームで、開発者やシステム管理者が軽量なコンテナ環境を手軽に構築・運用できる強力なツールです。これまで当サイトでもDockerの活用方法に関するチュートリアルをいくつか紹介してきましたが、実際の運用では思わぬトラブルに遭遇することもあります。
本記事で取り上げるのは、次の2つの問題です。1つ目は、名前付きコンテナを起動しようとした際に表示される「Conflict. The name ... is already in use by container ...」というエラー。2つ目は、コンテナを削除しようとした際に表示される「Conflict, cannot remove the default name of the container」というエラーです。それぞれの原因と具体的な解決方法を見ていきましょう。
発生する問題
まず、実際にどのようなエラーが表示されるのか確認します。
docker run -d -ti -p 22 -p 80 --name <name> <repo:tag>
FATA[0000] Error response from daemon: Conflict. The name "XYZ" is already in use by container hexacode. You have to delete (or rename) that container to be able to reuse that name.
このエラーは、指定した名前がすでに別のコンテナによって使用されているため、新しいコンテナを起動できないことを意味します。ところが、docker psコマンドを実行しても、該当するコンテナは表示されません。さらに、残存していると思われるコンテナを削除しようとしても、次のようなエラーが出てしまいます。
docker rm --link <name>
Error response from daemon: Conflict, cannot remove the default name of the container
FATA[0000] Error: failed to remove one or more containers
一見すると行き詰まってしまったように見えますが、心配はいりません。適切な手順を踏めば必ず解決できます。
解決方法
まず、この問題の原因を整理しておきましょう。過去のある時点で名前付きコンテナを作成し、それを実行したままにしていたとします。その後、何らかの理由でホストマシンが再起動され、コンテナが正常に終了されなかった場合、残存ファイルがシステム内に残ります。Dockerは古いコンテナがまだ存在していると認識するため、同じ名前で新しいコンテナを起動できなくなってしまうのです。
この問題には2つの解決方法があります。まずは正規の手順から紹介します。
方法1:docker ps -aコマンドで確認して削除する
docker psコマンドでは実行中のコンテナしか表示されないため、停止済みの古いコンテナは見えません。しかし、-aフラグを付けてdocker ps -aを実行すると、これまでに作成されたすべてのコンテナの履歴を確認できます。
異常終了したコンテナは、ステータスに0以外の終了コードが表示されます。コンテナ名を目印に目的のコンテナを探し、16進数のコンテナIDを指定して削除しましょう。
docker rm 85c2981e63f6 26ea04f41ab3
方法2:残存ファイルを手動で削除する
もう1つの方法は、/var配下に残ったファイルを手動で削除することです。具体的には、/var/lib/docker/containers/ディレクトリ以下に各コンテナのデータが格納されています。各コンテナディレクトリは非常に長いハッシュIDで命名されており、内部には大量のJSON形式の設定ファイルが含まれています。目的のコンテナ名に一致する文字列を検索すれば、該当する設定ファイルを格納したディレクトリが見つかります。
該当する親ディレクトリを削除したら、Dockerサービスを再起動します。これで、以前使用していたコンテナ名を再度利用できるようになるはずです。これはKVMやlibvirtの残存データ問題への対処と同様のアプローチですね。
systemctl restart docker
これで作業は完了です。コンテナを問題なく起動できるようになったでしょう。
まとめ
サービスがクラッシュや再起動をどれだけ堅牢に処理できるかに関わる問題は、本当に厄介です。残存ファイルが原因でここまで手間がかかるのは望ましい状態とは言えず、本来ならサービス側が自動的に復旧すべきものです。ただし、コンテナ技術はまだ発展途上であるため、この種の問題はある程度仕方がない面もあります。
本記事が、予期しない再起動後に発生する名前付きコンテナの作成エラーや残存データの削除に関する混乱を解消する助けになれば幸いです。Dockerの操作体験が少しでも快適になり、バックグラウンドでの仕組みについても理解が深まったのではないでしょうか。それでは、快適なコンテナライフをお楽しみください。
-
Windows 10でBluetoothがつながらない・接続できないときの対処法7選
Bluetoothを使えば、ケーブルなしでWindows 10のPCに周辺機器やアクセサリをワイヤレスで接続できます。普段は問題なく動作しますが、接続できない・不安定になるなどのトラブルが起こることもあります。この記事では、Windows 10 PCのBluetooth接続の問題を解決するための対処法を7つのステップでわかりやすく解説します。1. Bluetoothが有効になっているか確認する基本的な確認ですが、意外と見落とされがちなのがBluetoothの有効/無効設定です。デスクトップ右下にある通知アイコン(通知センター)をクリックまたはタップして展開しましょう。Bluetoothアイコン
-
Windows 10 の Microsoft Store が動かない?問題を解決する5つの対処法
Microsoft Store(旧 Windows ストア)は、パソコンに Microsoft 製アプリケーションを入手するための公式オンラインマーケットプレイスです。しかし、ストア自体やそこから入手したアプリにおいて、さまざまなトラブルが発生することがあります。この記事では、Windows 10 のストアに関する問題を解決するための5つの効果的な方法をご紹介します。 1. トラブルシューティングツールを実行する 問題を解決する際に最初に試したいのが、トラブルシューティングツールです。Microsoft では、Windows ストアが正常に動作しない原因となる問題をスキャン・検出し、可能であれ