docker - Docker compose 给出错误容器名称已被占用
问题描述
我的用例是我需要使用 Mongodb 和 InfluxDb 等 3rd 方服务的容器作为我完整 docker 服务设置的一部分。这些 3rd 方服务的容器可能存在也可能不存在于我的机器中。我想使用相同的容器并防止 docker compose 如果它们已经存在则重新创建它们,如果它们不存在则重新创建它们。
我创建了一个 docker compose 文件,如下所示:
version: "3.7"
services:
mongo-database:
container_name: mongo
image: mongo:${Mongo_Service_Version}
restart: always
ports:
- "30041:27017"
networks:
- internal-network
volumes:
- data:/data/db
service-test:
container_name: service-test
image:service1:v1
restart: always
ports:
- "30091:80"
networks:
- internal-network
depends_on:
- mongo-database
我创建了一个 mongo 服务,然后创建了一个依赖于 mongo 服务的应用程序服务测试。(注:服务测试仅用于演示目的)
我面临的问题是,当我运行 docker-compose 命令来启动服务时,我能够成功地做到这一点。docker compose 首先创建一个 mongo 容器,然后创建一个服务容器,但问题是如果已经存在同名和相同配置的 mongo 容器,docker compose 会给出错误,即同名容器已经存在。我的用例是我不想手动删除旧容器并使用 docker-compose 重新创建它。我的期望是 docker compose 足够聪明来处理这种情况。如果容器已经存在,Docker compose 不应尝试重新创建它。
如果只是服务版本升级并且我们运行 docker compose 命令,docker compose 表现得很聪明并且不会重新创建 mongo 容器,但是为什么在单独/手动创建 mongo 容器时它不会表现得很聪明。
解决方案
推荐阅读
- php - 如何更改 fpdf 文件名输出('',S)?
- flutter - 我可以在我的 mapBox 地图中添加道路,供我的 Flutter 应用使用吗?
- ruby-on-rails - Rails 表单助手:一个表单中的多个嵌套模型,如“Article.comments”?
- jquery - WordPress 上 jQuery 脚本执行缓慢
- php - 如何调用这种 php 对象
- c++ - 具有快速查找功能的 C++ 列表
- javascript - 将 PHP 变量传递给 javascript 时出现空警报(回声有效)
- c# - 如何在 c# 控制台中像 webbrowser 一样加载网站?
- sql - 如何在 SQL 中访问 JSON 对象的字段?
- python - python中的多处理库无法导入自定义模块,并且在同一python文件中定义函数时也不起作用