修改正在运行的docker容器的端口映射

× 文章目录
  1. 1. 0x00 前言
  2. 2. 0x01 修改端口映射
    1. 2.1. 1. 确定修改容器的CONTAINER ID
    2. 2.2. 2. 进入目录
    3. 2.3. 3. 停止docker引擎服务
    4. 2.4. 4. 修改 hostconfig.json 和 config.v2.json
    5. 2.5. 5. 保存之后,启动docker服务,启动相应容器
  3. 3. 参考链接

0x00 前言

在创建容器时,只有自己本地使用,端口映射127.0.0.1

后面有同事也需要用这个,想要修改正在运行的容器的端口映射

0x01 修改端口映射

1. 确定修改容器的CONTAINER ID

1
2
3
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3ee16c438a0 mysql:5.7.13 "docker-entrypoint..." 3 days ago Up 40 hours 127.0.0.1:6606->3306/tcp open_source_mysqldb

2. 进入目录

1
2
3
4
# docker inspect a3ee16c | grep Id
"Id": "a3ee16c438a01e7d0bfc0acf923e5c2d9ab5d68043145c7d8db782455e74147d",

# cd /var/lib/docker/containers/a3ee16c438a01e7d0bfc0acf923e5c2d9ab5d68043145c7d8db782455e74147d

3. 停止docker引擎服务

1
# systemctl stop docker

4. 修改 hostconfig.json 和 config.v2.json

  1. 修改hostconfig.json
    找到PortBindings,修改HostIp为 0.0.0.0

    1
    2
    3
    4
    5
    6
    7
    8
    "PortBindings": {
    "3306/tcp": [
    {
    "HostIp": "0.0.0.0", // 修改127.0.0.10.0.0.0
    "HostPort": "6606"
    }
    ]
    }
  2. 修改config.v2.json
    找到 ExposedPorts 和 Ports 对应项,修改Ports的HostIp为0.0.0.0

    1
    2
    3
    4
    5
    6
    7
    8
    "Ports": {
    "3306/tcp": [
    {
    "HostIp": "0.0.0.0",
    "HostPort": "6606"
    }
    ]
    },

5. 保存之后,启动docker服务,启动相应容器

1
2
systemctl start docker
docker start open_source_mysqldb

结果

1
2
3
# docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3ee16c438a0 mysql:5.7.13 "docker-entrypoint..." 3 days ago Up 13 seconds 0.0.0.0:6606->3306/tcp open_source_mysqldb

参考链接

https://stackoverflow.com/questions/19335444/how-do-i-assign-a-port-mapping-to-an-existing-docker-container