使用以下命令运行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文件夹,删除。raw文件或较大的docker归档文件。

其他回答

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

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

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

$ sudo docker ps -a 复制容器ID

对于每个容器,请:

$ sudo docker stop container_ID $ sudo docker rm container_ID

我遇到这个问题是因为我在docker-compose中有两个或多个容器,它们具有相同的container_name。yml文件。

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

--rm        Automatically remove the container when it exits

e.g.

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

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

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

只是解释一下其他人所说的(我花了一些时间来理解),简单地说,当您看到这个错误时,这意味着您已经有了一个容器,您需要做的就是运行它。虽然直觉上docker run应该运行它,但它没有。docker命令只用于第一次启动容器。要运行一个现有的容器,你需要docker start $container-name。要求开发人员创建有意义的/直观的命令已经说得够多了。