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

在docker compose中添加默认外部网络,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我正在努力学习docker并理解docker的写作 当我尝试外部网络部分时: networks: default: external: name: my-pre-existing-network version: '3' services: my-service: # can be a pre-built image like this or built locally (check reference) image: some-im

我正在努力学习docker并理解docker的写作

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

 networks:
  default:
    external:
      name: my-pre-existing-network
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
我明白 需要创建“我的现有网络”

是否可以从compose文件本身中创建新的默认外部网络


这更多是从学习/理解的角度进行的,也是docker network create命令的替代方法。谢谢。

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

 networks:
  default:
    external:
      name: my-pre-existing-network
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
如果您要在swarm中使用compose文件,您可能需要选择
driver:overlay
。可以找到其他信息。

参考文档:“Compose不尝试创建名为
[projectname]\u default
,而是查找名为
my pre-existing network
的网络,并将应用程序的容器连接到该网络。”-
docker Compose
不会尝试创建网络

外部
网络必须已经存在(例如“
my pre-existing network
”),它可以是从不同的
docker compose
环境创建的
docker网络
,也可以是使用命令创建的
docker网络


注意
docker compose
网络前缀为。您可以使用列出现有网络。

否您需要先使用命令docker network来创建它网络
my pre-existing network
需要存在(
docker compose
不会创建指定为外部的网络)-它可以是从不同组合创建的
docker网络
,也可以是使用命令创建的网络。请注意,docker Compose将根据此配置自动为您创建并使用名为
default
的网络,因此,您可以删除此设置中的所有
网络:
块,效果相同。但我不清楚这是提问者的要求。