docker为已启动的容器添加端口映射

Docker已运行容器添加端口映射

针对已运行的容器添加端口映射

1、查看容器是否映射端口

docker port [容器id 或 容器名]

有端口映射:

在这里插入图片描述

无端口映射:

在这里插入图片描述

2、查看容器完整Id

docker inspect [容器id] | grep Id
// 得到以下结果
//    "Id": "fcae55f5180a79487662de426863565c7df05ed9b87854093b62776734928d25",

3、进入docker容器目录查看

cd  /var/lib/docker/containers/var/lib/docker/containers

在这里插入图片描述

4、根据得到的容器完整id进入目录

cd fcae55f5180a79487662de426863565c7df05ed9b87854093b62776734928d25

目录中分别有两个文件:hostconfig.jsonconfig.v2.json,直接查看文件内容比较混乱可以下载到本机,使用json工具查看。

5、修改配置文件

hostconfig.json

// 当前容器 3306 端口绑定到本机 3306 端口
"PortBindings": {
    
    
    "3306/tcp": [
        {
    
    
            "HostIp": "",
            "HostPort": "3306"
        }
    ]
},

config.v2.json

// 这个文件需要查看两个位置
	// 暴露 3306、33060 端口
"ExposedPorts": {
    
    
    "3306/tcp": {
    
    
    },
    "33060/tcp": {
    
    
    }
},

// 和 
	// 这一段应该是表示哪些ip可以访问之类的
	// 如下也是我从一个 docker run -d -p80:80 ... 带有端口映射的容器的 config.v2.json 文件中复制出来修改后的
"Ports": {
    
    
    "3306/tcp": [
        {
    
    
            "HostIp": "0.0.0.0",
            "HostPort": "3306"
        },
        {
    
    
            "HostIp": "::",
            "HostPort": "3306"
        }
    ],
    "33060/tcp": null
},

6、替换配置文件

  1. 停止容器

    docker stop [容器Id 或 容器名]
    
  2. 将修改过后的配置文件复制到指定目录下 /var/lib/docker/containers/完整容器Id,(怕修改错误可以先备份原有的文件)

  3. 重启docker

    systemctl restart docker
    
  4. 重启后可以先查看 hostconfig.jsonconfig.v2.json 两个配置文件是否是修改过后的,如果不是可以尝试多上传几次(我就是这样的)

  5. 最后再查看端口号是否有映射

    docker port [容器id 或 容器名称]
    

猜你喜欢

转载自blog.csdn.net/weixin_58959834/article/details/131113312