Docker网桥
我正在尝试在docker上运行具有相同端口的多个容器 为此,我在brigde模式下创建了一个网络,并指定了一个子网Docker网桥,docker,docker-networking,Docker,Docker Networking,我正在尝试在docker上运行具有相同端口的多个容器 为此,我在brigde模式下创建了一个网络,并指定了一个子网 docker network create -d --subnet 192.168.99.0/24 mynetwork 然后用静态IP将docker容器连接到它 docker run -i -t -d -p 2377:2377 -p 7946:7946 -p 4789:4789-name container image docker network connect --ip 19
docker network create -d --subnet 192.168.99.0/24 mynetwork
然后用静态IP将docker容器连接到它
docker run -i -t -d -p 2377:2377 -p 7946:7946 -p 4789:4789-name container image
docker network connect --ip 192.168.99.98 mynetwork container
在启动第二个容器后,我使用了三个容器(使用不同的IP):
Error response from daemon: driver failed programming external connectivity on endpoint container(...): Bind for 0.0.0.0:7946 failed: port is already allocated
就我而言,由于网桥模式,我不应该出现此错误。docker run-p选项在主机系统上分配端口;这些都是跨所有容器共享的,独立于他们使用的Docker专用网络。这些还将与主机上运行的非Docker进程冲突 如果您的目标只是能够在同一网络上的容器之间通信,那么您根本不需要
-p
选项。它们可以使用彼此的--name
和容器中的服务正在侦听的端口进行连接
如果您试图同时运行多个Docker容器堆栈,则需要确定主机上的哪个特定实例端口2377将路由到,并更改另一个容器的“-p
选项
专门设置Docker内部私有IP地址(或者根本不用担心它们)几乎是不必要的。我会删除那些
--subnet
和--ip
选项。要在容器之间进行通信,请将它们置于上述相同的网络上;从外部看,您需要一个(独特的)-p
选项。非常感谢您,如果可以的话,我会升级100次!