How to make Docker container accessible to other network machines through IP?
我需要创建一些Docker容器,这些容器必须由同一网络上的其他计算机访问。
问题是,当我创建容器时,Docker得到的IP地址仅在主机内有效。
我已经查看了Docker文档(网络),但没有任何效果。
如果我在我的机器上运行
我该怎么做?
多主机访问涉及具有服务发现的覆盖网络。参见Docker/Networking:
An overlay network requires a key-value store. The store maintains information about the network state which includes discovery, networks, endpoints, IP Addresses, and more.
The Docker Engine currently supports Consul, etcd, ZooKeeper (Distributed store), and BoltDB (Local store) key-value store stores.
This example uses Consul.
如果您的节点(同一网络中的其他计算机)运行其Docker守护进程并引用该键值存储,那么它们将能够与来自其他节点的容器通信。
1 | DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --cluster-store=consul://<NODE-0-PRIVATE-IP>:8500/network --cluster-advertise=eth0:2375" |
您只需要创建一个覆盖网络:
1 | docker network create -d overlay --subnet=10.10.10.0/24 RED |
(由于密钥值存储,它将在所有计算机中可用)
并在该网络上运行容器:
1 | docker run -itd --name container1 --net RED busybox |
您必须在主机上创建一个桥并将该桥分配给容器。这可能有助于您:https://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/
当容器:端口通过主机:端口发布时,其他网络节点可以轻松访问Docker容器。
这是使用
1 2 | -p, --publish=[] Publish a container's port, or range of ports, to the host. |
在线查看文档。这个问题/答案读起来也很有趣。
基本上:
允许LAN节点连接到Docker主机IP:8085并与netcat命令讨论。