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

如何避免这种错误?


当前回答

我也被这个弄糊涂了。这里有两个相关命令:

docker run  # Run a command in a **new** container
docker start  # Start one or more stopped containers

其他回答

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

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

docker ps -a

步骤2:

docker rm name_of_the_docker_container

对我来说,问题在于我在dockerfile中不止一次地使用了一个映像名。

这意味着您已经在过去使用该参数启动了容器

docker run --name registry-v1 ...

您需要先删除它,然后才能重新创建具有相同名称的容器

docker rm registry-v1

当容器仍在运行时,您需要先停止它,然后才能删除它

docker stop registry-v1

或者直接为新容器选择一个不同的名称。

来获取现有容器及其名称的列表

docker ps -a

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

错误是这样的:

不能为服务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 run应该运行它,但它没有。docker命令只用于第一次启动容器。要运行一个现有的容器,你需要docker start $container-name。要求开发人员创建有意义的/直观的命令已经说得够多了。