我可以使用Docker-Compose创建没有容器的网络

Fut*_*e32 5 networking docker docker-compose

过去几天我一直在玩Docker-Compose,看看它是否会简化我的Docker容器和网络构建过程.

我对此感到非常满意,但是当我想创建一些未被任何"服务"使用的"网络"时遇到了问题.

我想要这种行为的原因是有一个Docker-Compose文件来创建我的本地"私人"网络和"公共"网络结构.还有一个单独的Docker-Compose,用于我的每个项目,利用那些已经创建的"外部"网络.

我注意到我只能指定一个虚拟容器来初始化网络的创建,但似乎没必要.例如.

version: '2'
services:
  # Dummy Service
  dummy:
    image: busybox
    container_name: dummy
    hostname: dummy
    networks:
      private:

networks:
  # Private Network for all Services (across Projects)
  private:
    driver: bridge
    ipam:
      driver: default
      config:
      - subnet: 172.18.0.0/24
        gateway: 172.18.0.1
Run Code Online (Sandbox Code Playgroud)

是否有我忽略的设置/标志,或者目前没有办法使用Docker-Compose创建没有容器的网络.

另外,我刚接近这个错误吗?

从本质上讲,我希望有一个网络可以存在,无论哪个容器加入/离开它.

BMi*_*tch 7

在docker-compose中有一个检查是否使用了网络,如果它未被使用,它会跳过创建网络:

$ cat docker-compose.net-only.yml
version: '2'

networks:
  test1:
  test2:

$ docker-compose -f docker-compose.net-only.yml --verbose up
.....
WARNING: compose.network.from_services: Some networks were defined but are not used by any service: test1, test2
.....

$ docker network ls | grep test

$
Run Code Online (Sandbox Code Playgroud)

我建议将其作为一个小的shell脚本,调用docker network create而不是尝试使用docker-compose来执行此任务.


Eth*_*aZa 6

docker-compose-networks.yml:

version: '3.7'

services:
    works:
        image: scratch
        restart: always
        container_name: net_works
        deploy:
            placement:
                constraints:
                    - "node.hostname==scratch"
        networks:
            - mynet1
            - mynet2

networks:
    mynet1:
        name: mynet1
        driver: overlay
        attachable: false
    mynet2:
        name: mynet2
        driver: overlay
        attachable: true
Run Code Online (Sandbox Code Playgroud)