Docker-Compose问题与容器名称

我已经创build了一个包含所需包的Docker镜像。 我已经运行了指定主机和访客端口的docker镜像以及所需的卷安装示例:


sudo docker run -it --name CONTAINERNAME -v /host:/guest -p hostportno:guestportno 

我的容器运行良好。
我正尝试使用docker-compose将我的容器迁移到新的docker镜像。
我创build了docker-compose.yml文件,并指定了如下所示的必需参数:

 image: test1 ports - "1234:123" - "2000:223" volumes: - /home:/test -container_name: dockercomposetest working_dir: /test command: /bin/bash 

我无法使用docker-compose来迁移它。
我得到如下所述的问题:

 Conflict. The name "test" is already in use by container eeedac72bb25. You have to delete (or rename) that container to be able to reuse that name. 

目前的解决办法是我必须停止并删除容器,并执行docker-compose up
我可以不使用docker-compose重新启动/迁移容器,其名称与我在正常的docker run过程中启动的相同。

不,你不能有两个同名的容器。 您必须为container_name字段select一个不同的名称。 之前的容器需要删除,然后才能重新使用该名称。

如果您希望Compose将容器视为已创build容器,则必须将容器标签设置为Compose。 find这些的最简单的方法是创build一个容器(可能通过删除container_name字段),然后使用docker inspect来查看标签。

你可以检查--force-recreate是否有帮助:

  docker-compose up --force-recreate 

docker-compose up手册页 :

如果要强制Compose停止并重新创build所有容器,请使用--force-recreate标志。

  --force-recreate 

即使configuration和图像没有改变,也可以重新创build容器