我建議去代理路由,因爲它會使事情更容易動態添加和刪除您的容器。也就是說,您可以使用--net container:name
創建一個新的容器與另一個容器的網絡名稱空間。您將有相同的IP,甚至可以看到相同的連接:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13062f97a75c registry:2 "/bin/registry serve " 11 weeks ago Up 6 hours 0.0.0.0:5000->5000/tcp registry
$ docker run -it --rm --net container:registry debian
[email protected]:/# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 20:22 ? 00:00:00 /bin/bash
root 7 1 0 20:22 ? 00:00:00 ps -ef
[email protected]:/# apt-get update && apt-get install net-tools
...
[email protected]:/# netstat -lnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp6 0 0 :::5000 :::* LISTEN
有趣......如何,即使是工作?他們都可以綁定到相同的端口?我需要使用SOREUSEPORT嗎? –
它將每個容器的網絡放在同一個命名空間中。所以你在相同的網絡接口上。無論你如何重複使用容器外部進程之間的端口,希望在容器內也可以工作。 – BMitch