Docker更改了活动容器上的已发布端口

时间:2015-03-13 12:16:54

标签: docker

我想更改活动容器上的已发布端口,例如

docker run -p 80:80 --name nginx_live nginx

然后,将其更改为另一个端口,例如-p 8080:80

2 个答案:

答案 0 :(得分:6)

Docker没有一种机制,可以在容器启动后更改已发布的容器端口。发布端口时,会发生两件事:

  • Docker在iptables表格中创建nat规则,将流量重定向到" public"端口到容器。
  • Docker启动侦听该端口的代理服务,以处理本地生成的流量。

虽然您理论上可以手动更新防火墙规则以使服务在新端口上可用,但您将无法取消绑定Docker代理,因此无法使用该服务启动任何新服务" public& #34;端口。

您最好的做法是删除容器并重新部署它,或者依靠某种前端代理来处理重定向,而不是使用Docker的端口发布机制。

答案 1 :(得分:2)

这不是Docker功能。

但是添加另一层间接是很容易的:在主机上公开一个容器端口,然后运行一个nginx实例或一个防火墙FORWARD规则,将你想要的任何本地端口映射到该docker-shared端口。