首页 > 解决方案 > docker-compose 运行现有容器

问题描述

我正在使用 docker-compose 运行正在开发的应用程序。

我有一个运行 python Flask web 应用程序的“web”服务。该服务依赖于其他服务(数据库、缓存等)。

我需要以交互方式运行“web”主服务才能访问调试器(ipdb)。我发现这样做的方法是

docker-compose run --name my-app.web --service-ports web

当我退出此容器并尝试使用相同的命令再次运行它时,出现此错误:

ERROR: Cannot create container for service web: Conflict. The container name "/my-app.web" is already in use by container "4fed84779bb02952dedb8493a65bd83b1a6664f066183233e8c8b4dc62291643". You have to remove (or rename) that container to be able to reuse that name.

如何在不创建新容器的情况下重新启动该容器?

还是每次我需要启动此应用程序时创建新容器的正确方法?

还是我错过了能够以交互方式启动其中一项服务的东西?

标签: dockerdocker-compose

解决方案


当您设置自定义名称时,docker-compose run执行完成后不会删除容器。要启用此行为,请使用以下选项--rm

docker-compose run --rm --name my-app.web --service-ports web

您还可以手动删除容器以便能够再次运行它:

docker rm my-app.web

如果您不设置自定义名称,则无需这样做。


推荐阅读