修改docker容器的埠對映

weixin_34198881發表於2018-11-08

大家都知道docker run可以指定埠對映,但是容器一旦生成,就沒有一個命令可以直接修改。通常間接的辦法是,儲存映象,再建立一個新的容器,在建立時指定新的埠對映。

有沒有辦法不儲存映象而直接修改已有的這個容器呢?有。在stackoverflow上面找到答案了。

方法一
  • 1、停止容器(docker stop d00254ce3af7)
  • 2、停止docker服務(systemctl stop docker)
  • 3、修改這個容器的hostconfig.json檔案中的埠(原帖有人提到,如果config.v2.json裡面也記錄了埠,也要修改)
cd /var/lib/docker/containers/d00254ce3af7*     #這裡是CONTAINER ID

vim hostconfig.json
如果之前沒有埠對映, 應該有這樣的一段:
"PortBindings":{}

增加一個對映, 這樣寫:
"PortBindings":{"8080/tcp":[{"HostIp":"","HostPort":"60000"}]}
前一個數字是容器埠, 後一個是宿主機埠。將宿主機的60000埠對映到容器的8080埠
而修改現有埠對映更簡單, 把埠號改掉就行。
  • 4、啟動docker服務(systemctl start docker)
  • 5、啟動容器(docker start d00254ce3af7)

hostconfig.json檔案

config.v2.json檔案

方法二

1、獲得容器IP
container_name 換成實際環境中的容器名

docker inspect `container_name` | grep IPAddress

2、iptable轉發埠
將宿主機的60000埠對映到容器的8080埠

iptables -t nat -A  DOCKER -p tcp --dport 60000 -j DNAT --to-destination 172.17.0.2:8080
可惜不在西安,上班族可讀名校成人本科,1年課程,快速取證

相關文章