gpt4 book ai didi

docker - docker 容器上的热插拔端口映射

转载 作者:行者123 更新时间:2023-12-02 18:55:47 25 4
gpt4 key购买 nike

我有一个通过 TCP 端口公开二进制协议(protocol)的应用程序。我正在考虑转移到 docker,但我遇到了一个问题。目前,我有一种在不断开连接的情况下升级服务器的机制。我基本上可以通过将端口移交给新的应用程序实例来升级服务器。我可以基于 docker 构建这样的层,但我想知道是否有一种方法可以使用 docker 将端口连接从一个容器移交给另一个容器。我希望我可以用相同的端口启动一个新容器,它会神奇地工作。可悲的是,您显然不允许附加到已映射的端口。

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

最佳答案

我建议使用代理路由,因为它会使动态添加和删除容器变得更加容易。也就是说,您可以使用 --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

关于docker - docker 容器上的热插拔端口映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39625273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com