修改docker容器端口映射的方法

大家都知道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端口而修改现有端口映射更简单, 把端口号改掉就行。

 注:我原来的容器中只有22的对外访问,现在想在容器中部署一个springboot项目,端口为8091,则修改如下:

“PortBindings”:{“22/tcp”:[{“HostIp”:””,”HostPort”:”10022″}],”8091/tcp”:[{“HostIp”:””,”HostPort”:”8000″}]}

  • 4、启动docker服务(systemctl start docker)
  • 5、启动容器(docker start d00254ce3af7)

hostconfig.json文件

config.v2.json文件

注:config.v2.json文件修改为(原文档修改的是Ports位置,验证有问题,改为修改ExposedPorts)

“ExposedPorts”:{“22/tcp”:{},”8091/tcp”:{}},

Total
0
Shares
Previous Post

docker安装部署京东自动签到程序/脚本-jd_base

Next Post

老唐实盘周记20211204

Related Posts