我想在Docker Service / Swarm网络中使用shell。具体来说,我希望能够连接到网络内的数据库。
从经理节点,我尝试了:
# 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网络(event-data-core-prod)与
docker create
或docker run
不兼容。此网络只能由泊坞窗服务使用。
是否有可能以某种方式启动可以连接到网络服务的交互式会话?
答案 0 :(得分:2)
由于Docker Engine v1.13(已经由johnharris85提及)is非服务容器可以使用--attachable
附加到群组模式覆盖网络创建网络时的命令行参数:
docker network create --driver overlay --attachable my-attachable-overlay-network
关于你的后续问题:
有没有办法为现存的网络改变这个?
是和否,就像我在another question中所述,您可以使用docker service update
功能:
更新已在运行的泊坞窗服务:
创建一个可附加的覆盖网络:
docker network create --driver overlay --attachable my-attachable-overlay-network
删除已禁用的网络堆栈"可连接"覆盖网络(在此示例中称为:my-non-attachable-overlay-network
):
docker service update --network-rm my-non-attachable-overlay-network myservice
添加一个已启用"可连接的网络堆栈"覆盖网络:
docker service update --network-add my-attachable-overlay-network myservice