使用以下命令运行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 rm $(docker ps -a -f status=exited -q)

其他回答

TL:博士;

列出所有容器: Docker ps a 根据id删除相关容器: Docker容器rm <container_id>

我遇到了这个问题,当我运行docker rm(通常工作)时,我会得到:

错误:没有这样的图像

最简单的解决方案是通过运行以下命令删除所有停止的容器:

docker container prune

OP的问题是错误。删除状态并不是唯一的解决方案——甚至不是一个好的解决方案。问题是docker运行不能重入,并且docker启动是无效的w/o运行。所以我们要把它们结合起来。

例如,要运行Postgres而不破坏之前的状态,试试这个:

docker start postgres || docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=password postgres:13-alpine

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

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

docker ps -a

步骤2:

docker rm name_of_the_docker_container

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

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

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

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

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