【docker】给运行中的docker容器追加端口映射

当Docker容器启动后需要添加新的端口映射时,可以避免重新打包镜像。通过直接编辑容器的hostconfig.json和config.v2.json文件,找到端口映射部分添加或修改配置,然后重启Docker服务即可实现端口映射的增删。这种方法虽不受官方推荐,但在特定情况下能快速解决问题。

在docker运行容器时需要指定映射端口,那如果刚开始没有考虑的那么周全,后期遇到需要添加的端口时该怎么办呢。
网上常见的方法有两种:
1.配置防火墙转发端口。
2.把docker容器打包成镜像,然后以该镜像为基础新建一个容器。

笔者比较中意第二种方法,然而就在准备实施的时候发现了更好用的第三种方法。
(注:该方法不受官方保护,谨慎使用,后果自负)

docker容器被创建后会在服务器上保存一个文件夹,配置文件也放在此处,解决方法就是找到映射段都得配置文件修改就行了。

  1. 修改之前先停掉docker

    $ systemcel stop docker

  2. 在 /var/lib/docker/containers/[容器ID]/下找到hostconfig.json
    找到映射IP的位置,复制一个已映射的IP,修改为自己需要的就好(888是我新增的)

    “PortBindings”: {
    “888/tcp”: [
    {
    “HostIp”: “”,
    “HostPort”: “888”
    }
    ],
    “21/tcp”: [
    {
    “HostIp”: “”,
    “HostPort”: “21”
    }
    ]
    }

3.相同的目录下找到config.v2.json
该文件中有两处需要修改

"ExposedPorts": {
  "888/tcp": {},
  "21/tcp": {}
}


"Ports": {
    "888/tcp": [
        {
          "HostIp": "0.0.0.0",
          "HostPort": "888"
        }
    ],
    "21/tcp": [
        {
          "HostIp": "0.0.0.0",
          "HostPort": "21"
        }
    ]
}
  1. 修改完之后启动docker

    $ systemctl start docker

  2. 执行成功之后启动容器然后查看容器运行状态就可以看到新增加的端口在映射关系里已存在。

  3. 同理也可以去除端口映射。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值