docker · 2023年7月4日

追加docker容器端口映射的方法

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

但这样太麻烦了。现在有新方案来解决掉:

操作步骤:

1 查看容器

sudo docker  ps -a

2 停止容器

sudo docker stop f503

3 停止docker服务

sudo systemctl stop docker

4 修改文件

sudo vim   /var/lib/docker/containers/{container_id}/hostconfig.json

找到 这个 PortBindings 值。在这个json集合里边追加新端口

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

5 启动docker服务

sudo systemctl start docker

6 启动容器

sudo docker start {container_id} 

备注: 第4步修改文件要注意,如果config.v2.json里面也记录了端口,也要修改,

原帖地址 : stackoverflow.com/quest

config.v2.json文件里边

修改值 : config->ExposedPorts 和 networsettings->Ports , 参看如下

"Config": {
    ....
    "ExposedPorts": {
        "80/tcp": {},
        "8888/tcp": {}
    },
    ....
},
"NetworkSettings": {
....
"Ports": {
     "80/tcp": [
         {
             "HostIp": "",
             "HostPort": "80"
         }
     ],