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

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

docker rm registry-v1

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

docker stop registry-v1

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

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

docker ps -a

其他回答

在构建新映像时,您经常希望每次都运行一个新容器,并且使用相同的名称。我发现最简单的方法是使用——rm选项启动容器:

--rm        Automatically remove the container when it exits

e.g.

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

不幸的是,在文档中的例子中,它几乎是随机使用的

编辑:阅读下面Lepe的评论。

我已经通过以下步骤解决了这个问题,希望能有所帮助。

输入docker ps -a列出系统中的所有容器。 检查已初始化docker容器的NAMES部分。 然后输入docker rm——force name_of_container 按照您的意愿安装docker容器。

我有问题使用NIFI,我已经删除和重新安装使用docker。祝你好运。

你可以使用sudo docker rm YOUR_CONTAINER_ID命令删除它,然后使用sudo docker run… 或者使用sudo docker start YOUR_CONTAINER_ID重新启动一个现有的容器

删除所有退出的容器

docker rm $(docker ps -a -f status=exited -q)

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