5

我创建了一个外部覆盖网络:

docker network create --driver overlay --subnet=10.0.9.0/24 mynetwork

网络创建成功:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
37295f249f91        bridge              bridge              local               
c2ec03c99888        docker_gwbridge     bridge              local               
33dd13c9686d        host                host                local               
27goixjy0jys        ingress             overlay             swarm               
75508732fab2        none                null                local               
ef6fti3kq6w4        mynetwork           overlay             swarm  

当我尝试将容器放入其中时docker-compose.yml,服务的创建失败并出现

$ docker-compose up
Creating service-lb

ERROR: for service-lb  network mynetwork not found
ERROR: Encountered errors while bringing up the project.

我的docker-compose.yml样子是这样的:

version: "2"
services:
    service-lb:
        image: myreg:5000/myorg/service-lb:latest
        ports:
        - "0.0.0.0:10080:80"
        dns_search:
        - .
        networks:
        - mynetwork
networks:
    mynetwork:
        external: true

是否docker-compose无法处理集群范围内的覆盖网络?

Versions:
docker-compose v1.8.0-rc2
docker 1.12.0-rc5
4

2 回答 2

1

docker-compose 与 swarm 模式不兼容,因为它仍然使用容器 API,而 swarm 模式需要使用服务 API。我相信 1.12 中的覆盖网络仅适用于 swarm 模式。所以是的,它们是不兼容的。

于 2016-07-27T13:54:32.607 回答
0

这现在应该是可能的。来自https://docs.docker.com/compose/networking

在 v2.1+ 中,覆盖网络始终是可附加的。从 Compose 文件格式 2.1 开始,覆盖网络始终创建为可附加的,这是不可配置的。这意味着独立容器可以连接到覆盖网络。在 Compose 文件格式 3.x 中,您可以选择将 attachable 属性设置为 false。

您可能需要使用以下属性在 docker-compose 中声明您的网络:

external: true
driver: overlay
于 2021-09-08T10:23:37.353 回答