docker集装箱热交换端口映射

我有一个应用程序,通过TCP端口公开二进制协议。 我正在考虑搬到docker,但有一个我遇到的问题。 目前,我有一个升级服务器而不丢失连接的机制。 我能够基本上将端口交给新的应用程序实例来升级服务器。 我可以根据docker构build一个像这样的图层,但是我想知道是否有使用docker从一个容器移交端口连接的方法。 我希望能够用同一个端口启动一个新的容器,它只是神奇的工作。 可悲的是,你显然不被允许附加到已经映射的端口。

有没有办法做到这一点? 还是我需要构build某种代理层?

我build议去代理路由,因为它会使事情更容易dynamic添加和删除您的容器。 也就是说,你可以使用--net container:name来创build一个带有另外一个容器的networking命名空间的--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 root@13062f97a75c:/# 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 root@13062f97a75c:/# apt-get update && apt-get install net-tools ... root@13062f97a75c:/# netstat -lnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp6 0 0 :::5000 :::* LISTEN