在 docker-compose 中添加默认外部网络

Vip*_*non 6 docker dockerfile docker-compose

我正在尝试学习 docker 并理解 docker-compose

当我尝试外部网络部分时:

 networks:
  default:
    external:
      name: my-pre-existing-network
Run Code Online (Sandbox Code Playgroud)

我知道需要创建“我的已有网络”。

是否可以从撰写文件本身创建新的默认外部网络?

这更多地是从学习/理解的角度来看,也是 docker network create 命令的替代方案。谢谢。

小智 5

首先,检查您的文件版本。对于3.6版本,以下示例可以满足您的需求:

示例1:

version: '3.6'
services:
  webserver:
...
#add existing database network 
networks:
  default:
    external:
      name: proxy_host
Run Code Online (Sandbox Code Playgroud)

示例2:

version: '3.6'
services:
  webserver:
...
#add existing database network 
networks:
  default:
    name: proxy_host
    external: true
Run Code Online (Sandbox Code Playgroud)

示例 3:此配置创建新网络。

version: '3.6'
services:
  webserver:
    networks:
      - proxy_host
      - database_host
...
networks:
  proxy_host: {}
  database_host: {}
Run Code Online (Sandbox Code Playgroud)


Far*_*igo 1

如果您在撰写文件中创建网络,则该网络不被视为“外部”。您可以使用网络部分创建自定义网络:

version: '3'

services:
    my-service:
    # can be a pre-built image like this or built locally (check reference)
        image: some-image:latest 
        networks:
            - custom-network

networks:
    custom-network:
        driver: bridge
Run Code Online (Sandbox Code Playgroud)

如果您要将 compose 文件与 swarm 一起使用,您可能需要选择driver: overlay. 可以在此处找到更多信息。