大家都知道docker run可以指定端口映射,但是容器一旦生成,就没有一个命令可以直接修改。通常间接的办法是,保存镜像,再创建一个新的容器,在创建时指定新的端口映射。

方法一

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

 

方法二

 

先停止容器、停止docker

docker stop phpdev

systemctl stop docker

 

1、使用 docker ps -a 命令找到要修改容器的 CONTAINER ID

2、运行 docker inspect 【CONTAINER ID】 | grep Id 命令

3、执行 cd /var/lib/docker/containers 命令进入找到与 Id 相同的目录,如下图

Docker修改ip docker修改容器端口_Docker修改ip

4、停止 docker 引擎服务,systemctl stop docker 或者 service docker stop

5、进入对应 Id 所在目录后,如上图所示,修改 hostconfig.json 和 config.v2.json ---- vi hostconfig.json

Docker修改ip docker修改容器端口_Docker修改ip_02

   可以看到格式很乱,可以使用json美化工具查看具体信息。

Docker修改ip docker修改容器端口_端口映射_03

 

然后可以按照方框中所示,再添加一段类似的内容,比如新增一个 80 端口,在 PortBindings下边添加一下内容,端口配置之间用英文字符逗号隔开

"80/tcp": [
{
"HostIp": "",
"HostPort": "83"
} 
]

 效果如下

Docker修改ip docker修改容器端口_端口映射_04

 

 

接着修改 vi config.v2.json

找到 ExposedPorts 和 Ports 对应项,还是仿照原先的内容添加自己所需要的端口映射 

Docker修改ip docker修改容器端口_docker_05

 

========================================================================

========================================================================

 

Docker修改ip docker修改容器端口_docker_06

 效果如下:

Docker修改ip docker修改容器端口_docker_07

 

 

保存之后

systemctl start docker ,

docker start phpdev

启动容器之后就可以看到新增的端口映射了。

docker ps

Docker修改ip docker修改容器端口_json_08