Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker网桥_Docker_Docker Networking - Fatal编程技术网

Docker网桥

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上运行具有相同端口的多个容器

为此,我在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 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次!