停止父容器时,docker compose是否从子容器取消网络链接?
这是我旅程的继续。我之前没有提到,为了使这个过程动态化,因为我希望开发人员指定他们想要使用的项目,我使用ansible来创建本地环境 逻辑是: 正在运行ansible playbook run.yml-e{projects列表: ['app-admin']}-提供我想要启动的项目列表 停止现有主容器,以防它们从上一次运行 启动主容器 根据提供的项目列表运行角色任务,每个受支持的项目都有一个单独的角色 停止现有子项目容器,以防它们从上一次运行 启动子项目容器 根据角色进行一些配置 这也是网络的问题,当我停止主容器时,它会失败,并显示一条消息: 删除网络时出错:网络appnetwork具有活动终结点 由于子docker容器使用相同的网络,这是有意义的,但我在使用角色时还没有看到改变任务顺序的方法,因此主docker任务总是在特定于角色的任务之前运行 主ansible文件: 和角色示例app admin/tasks/mian.yml: 如果主容器停止,也许有一种方法可以以某种方式断开网络的链接。我认为当子容器网络设置为外部时:停止父容器时,docker compose是否从子容器取消网络链接?,docker,docker-compose,ansible,ansible-role,Docker,Docker Compose,Ansible,Ansible Role,这是我旅程的继续。我之前没有提到,为了使这个过程动态化,因为我希望开发人员指定他们想要使用的项目,我使用ansible来创建本地环境 逻辑是: 正在运行ansible playbook run.yml-e{projects列表: ['app-admin']}-提供我想要启动的项目列表 停止现有主容器,以防它们从上一次运行 启动主容器 根据提供的项目列表运行角色任务,每个受支持的项目都有一个单独的角色 停止现有子项目容器,以防它们从上一次运行 启动子项目容器 根据角色进行一些配置 这也是网络的问题
networks:
appnetwork:
external: true
解决了问题,但事实并非如此。使用外部网络的快速试验: dc1/dc1.yml dc2/dc2.yml 启动和停止:
$ docker network create -d bridge an0
1e07251e32b0d3248b6e70aa70a0e0d0a94e457741ef553ca5f100f5cec4dea3
$ docker-compose -f dc1/dc1.yml up -d
Creating dc1_nginx_1 ... done
$ docker-compose -f dc2/dc2.yml up -d
Creating dc2_redis_1 ... done
$ docker-compose -f dc1/dc1.yml down
Stopping dc1_nginx_1 ... done
Removing dc1_nginx_1 ... done
Network an0 is external, skipping
$ docker-compose -f dc2/dc2.yml down
Stopping dc2_redis_1 ... done
Removing dc2_redis_1 ... done
Network an0 is external, skipping
哦,所以我需要在所有docker compoe文件中将网络设置为外部,出于某种原因,我认为其中一个主文件应该将网络设置为外部。
networks:
appnetwork:
external: true
version: "3.0"
services:
nginx:
image: nginx
ports:
- "8080:80"
networks:
- an0
networks:
an0:
external: true
version: "3.0"
services:
redis:
image: redis
ports:
- "6379:6379"
networks:
- an0
networks:
an0:
external: true
$ docker network create -d bridge an0
1e07251e32b0d3248b6e70aa70a0e0d0a94e457741ef553ca5f100f5cec4dea3
$ docker-compose -f dc1/dc1.yml up -d
Creating dc1_nginx_1 ... done
$ docker-compose -f dc2/dc2.yml up -d
Creating dc2_redis_1 ... done
$ docker-compose -f dc1/dc1.yml down
Stopping dc1_nginx_1 ... done
Removing dc1_nginx_1 ... done
Network an0 is external, skipping
$ docker-compose -f dc2/dc2.yml down
Stopping dc2_redis_1 ... done
Removing dc2_redis_1 ... done
Network an0 is external, skipping