Docker 在单个 VM 设置中使用多个容器

Docker Consul Multiple Containers in single VM setup

Docker 我用来旋转 consul 容器的命令-

  1. 为容器 1 创建静态 IP = docker network create --subnet=172.18.0.0/16 C1

  2. 运行 该 Ip:
    的领事容器 docker run -d --net C1 --ip 172.18.0.10 -p 48301:8301/tcp -p 48400:8400/tcp -p 48600:8600/tcp -p 48300:8300/tcp -p 48302:8302/tcp -p 48302:8302/udp -p 48500:8500/tcp -p 48600:8600/udp -p 48301:8301/udp --name=test1 consul agent -client=172.18.0.10 -bind=172.18.0.10 -server -bootstrap -ui

  3. 类似地为容器 2 创建静态 Ip - docker network create --subnet=172.19.0.0/16 C2

  4. docker run -d --net C2 --ip 172.19.0.10 -p 58301:8301/tcp -p 58400:8400/tcp -p 58600:8600/tcp -p 58300:8300/tcp -p 58302:8302/tcp -p 58302:8302/udp -p 58500:8500/tcp -p 58600:8600/udp -p 58301:8301/udp --name=test2 consul agent -client=172.19.0.10 -bind=172.19.0.10 -server -bootstrap -ui -join 192.168.99.100:48301

位于 IP 172.19.0.10:8301 的领事容器 test2 无法与 172.18.0.10:8301 进行八卦。我收到未收到确认消息。

我还尝试了 --link 到 link 这两个容器。但这没有用。

谁能告诉我我做的是否正确?

当您在 docker 守护程序上创建用户定义的网络时,您必须了解这些网络的一些属性。

Each container in the network can immediately communicate with other containers in the network. Though, the network itself isolates the containers from external networks. Docker documentation

这有效地说明了您正在经历的事情。容器无法相互通信,因为它们彼此 隔离(驻留在不同的网络中)。

--link而言,它在用户定义的网络中不受支持。

Within a user-defined bridge network, linking is not supported. Docker documentation

解决方案是将两个容器简单地放在同一个网络中。根据您的描述,我没有看到明显需要使用两个不同的网络。只需为第二个使用不同的 --ip