【问题标题】:Can I connect directly to a docker swarm network?我可以直接连接到 docker swarm 网络吗?
【发布时间】:2017-02-21 19:30:10
【问题描述】:

我想要一个 Docker 服务/Swarm 网络中的外壳。具体来说,我希望能够连接到网络内的数据库。

从管理节点,我试过了:

# docker network ls
NETWORK ID          NAME          DRIVER              SCOPE
481c20b4039a        bridge        bridge              local
2fhe9rtim9mz        my-network    overlay             swarm

然后

docker run -it --network my-network alpine sh

但我得到了错误:

docker:来自守护进程的错误响应:swarm-scoped network (event-data-core-prod) 与 docker createdocker run 不兼容。此网络只能由 docker 服务使用。

是否有可能以某种方式启动可以连接到网络服务的交互式会话?

【问题讨论】:

  • 如果您使用的是 1.13,则在创建允许临时(非服务)容器加入网络的网络时有一个 --attachable 标志。
  • 有没有办法为现存的网络改变这个?文档似乎没有建议。我不想仅仅为了编辑这个配置值而停止整个网络。 docs.docker.com/engine/reference/commandline/network

标签: docker docker-swarm


【解决方案1】:

由于 Docker 引擎v1.13(就像johnharris85 已经提到的那样)它is 可以让非服务容器在创建网络时使用--attachable 命令行参数附加到集群模式覆盖网络:

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

关于您的后续问题:

有没有办法为现有网络更改此设置?

是也不是,就像我在another question 中已经描述的那样,您可以使用docker service update 功能:

更新已经运行的 docker 服务:

  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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多