针对docker swarm网络运行一次性命令时,“网络无法手动连接”

时间:2017-01-25 09:19:09

标签: docker docker-compose docker-swarm

我正在尝试运行一次性命令来初始化一个新的docker swarm中的数据库模式,该数据库模式部署了1.13对docker-compose文件的新支持。

该群体具有以下网络:

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
...
b7dptlu8zyqa        vme_internal         overlay             swarm
...

docker-compose.yml文件中定义为:

networks:
    internal:

我运行的命令是

docker run --rm --network vme_internal app:0.1 db upgrade

额外的vme_前缀来自我在部署时给予堆栈的名称。现在当我运行上面的命令时,我得到:

docker: Error response from daemon: Could not attach to network vme_internal:
rpc error: code = 7 desc = network vme_internal not manually attachable.

如何使网络可连接?

我在Docker networking找不到任何关于可附加的具体信息,并尝试在网络定义中添加属性attachable但未成功。

2 个答案:

答案 0 :(得分:22)

使用作曲家

自编写器v3.2以来,可以使用关键字attachable通过编辑器文件配置可附加属性,如:

networks:
  mynet1:
    driver: overlay
    attachable: true

使用docker network create

自Docker Engine API v1.25起,可以使用--attachable参数创建网络并使其可连接,如:

docker network create --driver overlay --attachable my-overlay-network

更新已在运行的泊坞窗服务:

  1. 创建一个可附加的覆盖网络:

    docker network create --driver overlay --attachable my-attachable-overlay-network
    
  2. 删除已禁用的网络堆栈"可连接"覆盖网络(在此示例中称为:my-non-attachable-overlay-network):

    docker service update --network-rm my-non-attachable-overlay-network myservice
    
  3. 添加一个已启用"可连接的网络堆栈"覆盖网络:

    docker service update --network-add my-attachable-overlay-network myservice
    

答案 1 :(得分:4)

默认情况下,使用新群集模式创建的覆盖网络不能与不从群集中运行的容器一起使用。版本1.13允许您切换此设置,因此请确保已升级。您必须使用可附加标志创建网络。我也无法让这个工作在群组工作者身上,需要将该节点提升为群体管理员。