使用以下命令运行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.

如何避免这种错误?


当前回答

下面是我在ubuntu 18上解决这个问题的方法:

$ sudo docker ps -a 复制容器ID

对于每个容器,请:

$ sudo docker stop container_ID $ sudo docker rm container_ID

其他回答

我在docker教程上就遇到过这种情况!我尝试使用的端口被占用,但docker仍然创建..一个图像?一个进程运行docker?我很快就知道了。无论如何,为了选择一个不同的端口,我必须删除旧的映像,然后docker再次运行。

有时候教程可能太过简洁。你想要的是简洁,而不是简练,甚至是简练。

问题:你试图创建新的容器,而在后台容器的同名正在运行,这种情况会导致冲突。

错误是这样的:

不能为服务X创建容器:冲突。名称X已经被容器abc123xyz使用。您必须删除或删除(或重命名)该容器才能重用该名称。

解决方案在docker-compose中重命名服务名。yml或删除正在运行的容器并重新构建(此解决方案涉及Unix/Linux/macOS系统):

获取所有正在运行的容器sudo docker ps -a 获取特定的容器id 停止并移除重复的容器/强制移除它

sudo docker stop <container_id>
sudo docker rm <container_id>

or

sudo docker rm --force <container_id>

导致

名称相同的容器仍然存在。

解决方案

若要重复使用相同的容器名称,请删除现有的容器:

docker rm <container name>

解释

容器可以存在于以下状态,在此状态下,容器名称不能用于其他容器:

创建 重新启动 运行 停顿了一下 退出 死

你可以通过以下命令查看运行状态的容器:

docker ps

要显示容器的所有状态,并找出容器名称是否被占用,请使用:

docker ps -a

这里我所做的,它工作得很好。

第一步:(它列出了docker容器的名称)

docker ps -a

步骤2:

docker rm name_of_the_docker_container

我正在学习docker,这也让我。我已经停止使用该名称的容器,因此我认为我可以使用该名称运行一个新容器。

事实并非如此。仅仅因为容器停止了,并不意味着它不能再次启动,并且它保留了所有与创建时相同的参数(包括名称)。

当我运行docker ps -a时,我看到了我在玩的时候创建的所有虚拟测试容器。

没问题,因为我不想再要这些了,我只是做了docker rm containername,此时我的新容器被允许使用旧名称运行。

啊,现在我写完了这个答案,我看到斯拉沃兹对沃尔特·霍华德的回答的评论,建议使用docker ps -a