停止父容器时,docker compose是否从子容器取消网络链接?

停止父容器时,docker compose是否从子容器取消网络链接?,docker,docker-compose,ansible,ansible-role,Docker,Docker Compose,Ansible,Ansible Role,这是我旅程的继续。我之前没有提到,为了使这个过程动态化,因为我希望开发人员指定他们想要使用的项目,我使用ansible来创建本地环境 逻辑是: 正在运行ansible playbook run.yml-e{projects列表: ['app-admin']}-提供我想要启动的项目列表 停止现有主容器,以防它们从上一次运行 启动主容器 根据提供的项目列表运行角色任务,每个受支持的项目都有一个单独的角色 停止现有子项目容器,以防它们从上一次运行 启动子项目容器 根据角色进行一些配置 这也是网络的问题

这是我旅程的继续。我之前没有提到,为了使这个过程动态化,因为我希望开发人员指定他们想要使用的项目,我使用ansible来创建本地环境

逻辑是:

正在运行ansible playbook run.yml-e{projects列表: ['app-admin']}-提供我想要启动的项目列表 停止现有主容器,以防它们从上一次运行 启动主容器 根据提供的项目列表运行角色任务,每个受支持的项目都有一个单独的角色 停止现有子项目容器,以防它们从上一次运行 启动子项目容器 根据角色进行一些配置 这也是网络的问题,当我停止主容器时,它会失败,并显示一条消息:

删除网络时出错:网络appnetwork具有活动终结点

由于子docker容器使用相同的网络,这是有意义的,但我在使用角色时还没有看到改变任务顺序的方法,因此主docker任务总是在特定于角色的任务之前运行

主ansible文件:

和角色示例app admin/tasks/mian.yml:

如果主容器停止,也许有一种方法可以以某种方式断开网络的链接。我认为当子容器网络设置为外部时:

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