Docker更改端口绑定
我正在运行一个容器(让我们称之为old_container
)与exposed
端口80,并使用-p
标志将端口绑定到端口80上的主机接口。
sudodocker运行-p 80:80 -i -t <old-image-id>
在我的生产环境中,我想从old_container
切换到new_container
。 所以我想closuresold_container
并启动new_container
。
首先,我必须在new_container
进行一些手动更改。 所以我运行它没有-p
标志,因为我不能将它绑定到端口80之前,我已经做了这个改变。
sudo docker run -i -t < new-image-id > #now I m doing my manual changes
当我完成我的更改后,我退出了new_container
。 我的计划是现在停止old_container
,并将old_container
绑定到端口80.但[start][1]
命令不提供端口绑定的可能性。
所以来到我的问题:我正在寻找设置一个停止的容器的端口绑定,最好没有创build一个new_container
的提交图像和运行这个图像作为另一个新的容器的解决方法。
你的使用案例听起来不错,在PROD上看Docker非常有趣。 你打算做什么手动更改? 虽然,我认为解决您的问题可能是
1)附加和分离一个容器(以后如何连接到正在运行的Docker容器? )
docker attach container_name ctrl p ctrl q
2)运行docker exec命令
docker run -it -p 80:80 --name=old_container <old-image-id>
上面的命令将创build一个名为“old_container”的容器
docker exec -d <old_container> mkdir foo
以上命令将在运行容器的主文件夹中创buildfoo目录。 我想你可以包括你的手动更改作为脚本代替'mkdir foo'(我从来没有尝试过)
PS :docker exec只能从docker 1.3版本下载
我确实为myboot2docker创build了运行容器更改端口的工具。
例如:两(2)个容器:
- docker运行-p 11521:1521 –name = xe1 container1
- docker运行-p 21521:1521 –name = xe3 container3
我使用此命令为container1创build另一个端口映射
p-map xe1 15210:1521
然后我把我的Spring Java应用程序连接到localhost:15210
切换到container3只需input这个命令
p-map xe3 15210:1521
以下是行动中的详细命令。
~ $ p-map Change port of running container Command: p-map <container_name> <host_port:guest_port> DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21521 to:172.17.0.1:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:11521 to:172.17.0.2:1521 ~ $ p-map xe1 15210:1521 Change port of running container sudo iptables -t nat -A DOCKER -p tcp --dport 15210 -j DNAT --to-destination 172.17.0.1:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21521 to:172.17.0.1:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:11521 to:172.17.0.2:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:15210 to:172.17.0.1:1521 -- ~ $ p-map xe2 15210:1521 Change port of running container Error: No such image or container: xe2 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21521 to:172.17.0.1:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:11521 to:172.17.0.2:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:15210 to:172.17.0.1:1521 -- ~ $ p-map xe3 15210:1521 Change port of running container sudo iptables -t nat -D DOCKER -p tcp --dport 15210 -j DNAT --to-destination 172.17.0.1:1521 sudo iptables -t nat -A DOCKER -p tcp --dport 15210 -j DNAT --to-destination 172.17.0.2:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21521 to:172.17.0.1:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:11521 to:172.17.0.2:1521 DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:15210 to:172.17.0.2:1521 --