docker run-> '名前はすでにコンテナで使用されています'


387

docker以下のコマンドでレジストリを実行すると、常にエラーがスローされます。

dev:tmp me$ docker run \
     -d --name registry-v1 \
     -e SETTINGS_FLAVOR=local \
     -e STORAGE_PATH=/registry \
     -e SEARCH_BACKEND=sqlalchemy \
     -e LOGLEVEL=DEBUG \
     -p 5000:5000 \
     registry:0.9.1
Error response from daemon: Conflict. The name "registry-v1" is already in use by container f9e5798a82e0. You have to delete (or rename) that container to be able to reuse that name.

このエラーを防ぐ方法は?

回答:


427

私もこれに戸惑いました。ここに関連する2つのコマンドがあります。

docker run 新しいコンテナでコマンドを実行する

docker start 1つ以上の停止したコンテナーを開始します


8
これが、Dockerコンテナを再実行するために探していた答えです。ありがとう!
isapir 2016

105
このため、を使用docker ps -aしてすべてのコンテナを表示することも重要です。
Sławosz

9
はい、docker start -a container-nameで作成されたコンテナを起動するために使用できるコマンドですdocker run。の-a省略形であるフラグに注意してください--attach。このようにして、コンテナをフォアグラウンドで開始します。docker run(デフォルトではコンテナーがフォアグラウンドで実行されます)。
KrzysztofWołowski19年1

1
@Suncatcherはい。
0x7d7b

1
@ eMPee584いいえ、docker create コンテナは作成されますが実行されません。
0x7d7b

182

これは、過去にパラメータを使用してコンテナをすでに起動していることを意味しますdocker run --name registry-v1 ...

で同じ名前のコンテナを再作成する前に、まずそれを削除する必要がありますdocker rm registry-v1。そのコンテナが実行中の場合、でコンテナを削除する前に、まずコンテナを停止する必要がありますdocker stop registry-v1。または、新しいコンテナに別の名前を選択するだけです。

既存のコンテナとその名前のリストを取得するには、単にを呼び出しdocker ps -aます。


4
しかし、なぜ停止しているのはなぜですか?または、停止してもまだそこにある場合はどうでしょうか。
mskw 2016年

2
そのため、再作成せずに後で実行することができます
Scott Stensland '19 / 01/16

2
つまり、基本的には「イメージを1回実行する(つまり、コンテナーを作成してからコマンドを実行する)ことができ、その後、コンテナーを必要なだけ起動することができる」と言っています。しかし、なぜ一度だけ実行する必要があるのでしょうか。コンテナに「何か」が加えられた可能性のある変更を永続化することなく(Dockerコンテナの状態の変更はコミットされない限り失われます)。
マクシムGumerov 16

14
コンテナーの名前がわかっている場合は、このショートカットを使用して削除できますdocker rm $(docker ps -aq --filter name=myContainerName)
Jujhar Singh

2
@JujharSinghなんでdocker rm myContainerName
ロドリゴ

153

ここで私がやったことは、うまくいきます。

ステップ1 :(それはその名前でDockerコンテナをリストします)

docker ps -a

ステップ2:

docker rm name_of_the_docker_container

4
これは私にとって役に立ちました。「docker ps」は直感的に、何かを返すためにフラグを立てる必要があります。
MichaelChan

docker psは実行中のコンテナのみを返し、停止したコンテナもリストするために-aが必要です。
Surendra Pratap

57

他の人が言っていることを説明するだけです(理解するのに少し時間がかかりました)といえば、このエラーが表示されたら、コンテナが既にあり、実行する必要があるのはそれを意味するということです。直感的にdocker runそれを実行することになっていますが、そうではありません。このコマンドdocker runは、コンテナを初めて起動する場合にのみ使用されます。既存のコンテナを実行するには、必要なものが必要ですdocker start $container-name。開発者に意味のある/直感的なコマンドを作成するように依頼することはこれで終わりです。


32

これを修正するには2つのオプションがあります...

  1. 次のコマンドで、その名前を使用して以前のコンテナを削除します docker rm $(docker ps -aq --filter name=myContainerName)

    または

  2. 現在のコンテナの名前を別の名前に変更します。つまり、この部分--name registry-v1を次のように変更 します --name myAnotherContainerName

そのコンテナー名(ie registry-v1)が過去に別のコンテナーによって使用されたため、このエラーが発生しています...たとえそのコンテナーが終了した可能性があります(現在は使用されていません)。


30

新しいイメージを作成するとき、毎回同じ名前で新しいコンテナーを実行することがよくあります。最も簡単な方法は--rmオプションでコンテナーを起動することでした

--rm        Automatically remove the container when it exits

例えば

docker run --name my-micro-service --rm <image>

悲しいことに、ドキュメントの例ではほとんどランダムに使用されています


画像またはコンテナ?
Pim Heijden

1
コンテナはビルドされたイメージから実行されます。クラス定義(イメージ)およびクラスインスタンス(コンテナ)とほぼ同じです。
マーティン

最初にコンテナ、次にイメージと言います。それは不明確です。さらに、そのイメージのコンテナがすでに実行されている場合は、を使用し--rmた後も実行されたままになります。再起動しません。
Pim Heijden

4
注意:フラグ--rmを使用してコンテナを作成した場合にのみ機能します--rm。つまり、--rmフラグなしでコンテナを作成した場合は、フラグを利用する前に手動で削除する必要がありますrm
レペ

18

原因

同じ名前のコンテナがまだ存在しています。

解決

同じコンテナ名を再利用するには、次の方法で既存のコンテナを削除します。

docker rm <container name>

説明

コンテナは次の状態で存在できます。その間、コンテナ名は別のコンテナに使用できません。

  • created
  • restarting
  • running
  • paused
  • exited
  • dead

runningを使用して、状態のコンテナを表示できます。

docker ps

すべての状態のコンテナーを表示し、コンテナー名が使用されているかどうかを確認するには、次のコマンドを使用します。

docker ps -a

コンテナーを再利用したい場合、-rmは適切なスイッチではありません。単純な「docker start {コンテナー名}」で十分です。
ケンイングラム

11

これは私がubuntu 18でこれをどのように解決したかです:

  1. $ sudo docker ps -a
  2. コンテナーIDをコピーする

コンテナごとに、以下を実行します。

  1. $ sudo docker stop container_ID
  2. $ sudo docker rm container_ID

10

コマンドsudo docker rm YOUR_CONTAINER_IDでそれを削除し、次にで新しいコンテナを実行できsudo docker run ...ます。または既存のコンテナを再起動してsudo docker start YOUR_CONTAINER_ID


7

次の手順を実行して問題を解決しました。

  1. 入力docker ps -aして、システム内のすべてのコンテナーをリストします。
  2. Dockerコンテナーを初期化したNAMESパーツを確認します。
  3. 次に、 docker rm --force name_of_container
  4. 必要に応じて、Dockerコンテナーをインストールします。

NIFIの使用に問題があり、Dockerを使用して削除して再インストールしました。幸運を。


4

私はドッカーを学んでいるだけで、これも私を獲得しました。その名前のコンテナはすでに停止しているので、その名前で新しいコンテナを実行できると思いました。

そうではありません。コンテナーが停止したからといって、コンテナーを再び開始できないという意味ではありません。また、コンテナーが作成されたときと同じパラメーター(名前を含む)をすべて保持します。

私が走ったとき docker ps -aしたときは、遊んでいる間に作成したすべてのダミーテストコンテナーを見たときです。

問題ありません。これ以上は必要ないのでdocker rm containername、その時点で新しいコンテナは古い名前で実行できました。

ああ、そして私がこの回答を書き終えた今、上記のウォルトハワードの回答に関するSlawoszのコメントを見て、 docker ps -a

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.