访问docker多主机网络中的docker容器

时间:2016-02-14 16:02:27

标签: networking docker

我使用Docker Overlay网络创建了一个Docker multi-host network,其中包含4个节点:node0,node1,node2和node3。 Node0充当键值存储,其共享节点的信息,而node1,node2和node3绑定到键值存储。

enter image description here

以下是node1网络:

user@node1$ docker network ls
NETWORK ID          NAME                DRIVER
04adb1ab4833        RED                 overlay             
 [ . . ]

至于node2网络:

user@node2$ docker network ls
NETWORK ID          NAME                DRIVER
04adb1ab4833        RED                 overlay             
 [ . . ]

container1正在node1上运行,它承载着名为RED的网络。

user@node1$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
f9bacac3c01d        ubuntu              "/bin/bash"         3 hours ago         Up 2 hours                                    container1

Docker为每个属于RED覆盖网络的容器的/ etc / hosts添加了一个条目。

user@node1$ docker exec container1 cat /etc/hosts

10.10.10.2  d82c36bc2659
127.0.0.1   localhost
 [ . . ]
10.10.10.3  container2
10.10.10.3  container2.RED

从node2,我试图访问在node1上运行的container1。我尝试使用下面的命令运行container1但它返回错误。

`user@node2$ docker docker exec -i -t container1 bash`
Error response from daemon: no such id: container1

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

仅为容器共享网络。

虽然跨多个主机覆盖的容器之间共享网络,但是docker守护程序无法按原样在它们之间进行通信。

user@_node2_$ docker exec -i -t container1 bash不起作用,因为no such id: container1确实从 node2 运行。

访问远程Docker守护程序

Docker守护进程通过套接字进行通信。 UNIX套接字默认情况下,但可以添加一个选项--host来指定守护程序应绑定到的其他套接字。

请参阅docker daemon手册页:

   -H, --host=[unix:///var/run/docker.sock]: tcp://[host:port] to bind or unix://[/path/to/socket] to use.
     The socket(s) to bind to in daemon mode specified using one or more
     tcp://host:port, unix:///path/to/socket, fd://* or fd://socketfd.

因此,可以从任何节点访问docker守护程序绑定到tcp套接字。

命令user@node2$ docker -H tcp://node1:port exec -i -t container1 bash可以正常运行。

Docker和Docker集群(Swarm

我不知道你想要部署什么,也许只是在玩教程,这太棒了!您可能有兴趣研究部署docker集群的Swarm。简而言之:您可以使用多个节点,因为它们是通过整个Docker API通过单个节点访问的一个强大的docker守护程序。