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

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

常规解决方案

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

一般来说使用第二种方法较好。但是也有投机取巧的方法,但该方法不受官方保护,谨慎使用,后果自负

投机取巧的解决方法

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

修改之前先停掉docker

$ systemcel stop docker

/var/lib/docker/containers/[容器ID]/下找到hostconfig.json
找到映射IP的位置,复制一个已映射的IP,修改为自己需要的就好(21端口是原有的。3306->6000是我新增的,表示将docker的3306端口映射到宿主机的6000端口)

"PortBindings": {
    "3306/tcp": [
      {
        "HostIp": "",
        "HostPort": "6000"
      }
    ],
    "21/tcp": [
      {
        "HostIp": "",
        "HostPort": "21"
      }
    ]
}

3.相同的目录下找到config.v2.json,该文件中有两处需要修改,新增3306端口映射。如下两处新增3306端口映射

"ExposedPorts": {
  "3306/tcp": {},
  "21/tcp": {}
}
"Ports": {
    "3306/tcp": [
        {
          "HostIp": "0.0.0.0",
          "HostPort": "6000"
        }
    ],
    "21/tcp": [
        {
          "HostIp": "0.0.0.0",
          "HostPort": "21"
        }
    ]
}

修改完之后启动docker

$ systemctl start docker

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

重启后,查看端口映射状态如下所示即为成功

[root@VM-12-7-centos ~]# docker ps -a
CONTAINER ID  IMAGE        COMMAND                CREATED    STATUS       PORTS                             NAMES
9ed9f7ec2308  mysql:5.7.37 "docker-entrypoint.s…" 2 days ago Up 6 minutes 33060/tcp, 0.0.0.0:6000->3306/tcp mysql_container
[root@VM-12-7-centos ~]# 
[root@VM-12-7-centos ~]# 
[root@VM-12-7-centos ~]# netstat -anp | grep 6000
tcp        0      0 0.0.0.0:6000            0.0.0.0:*               LISTEN      2257/docker-proxy           
[root@VM-12-7-centos ~]# 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值