给运行中的Docker容器添加新的端口

2 篇文章 0 订阅
2 篇文章 0 订阅

引言

有时想在运行的容器中再添加一个端口,特别是使用 nginx docker 时,刚开始没有预留足够的端口映射,后来又要添加几个项目,还不想启动多个nginx的容器,那么就一心想添加几个端口映射。

比如我想添加 宿主机的 [18080] 到 docker 的 [8080] 端口。

方法一:重新生成镜像

在当前容器基础上打包新镜像,重新生成容器。这种方法不喜欢,就不说了。

方法二:修改配置文件

要修改 /var/lib/docker/containers/[containerId] 目录下,hostconfig.json 和 config.v2.json 两个配置文件。

1. 停 docker 服务

一定要先停 docker 服务,要不修改无效,还会被刷回去。

systemctl stop docker

停止 docker 服务,所有的 docker 容器也自动停了。

2. 修改配置文件
2.1 修改 hostconfig.json文件

只需给 PortBindings 选项添加一项 "8080/tcp":[{"HostIp":"","HostPort":"18080"}]

{
    # ... 省略其他不相关
    
    "PortBindings":{
        "22/tcp":[{"HostIp":"","HostPort":"5022"}],
        
        # 添加新的映射代码
        "8080/tcp":[{"HostIp":"","HostPort":"18080"}]
    },
    
    # ... 省略其他不相关
}

2.2 修改config.v2.json 文件

需要给 ExposedPorts 和 Ports 两处都分别添加内容:

    # ... 省略其他不相关
    
    # 对外暴露端口
    "ExposedPorts":{
        "22/tcp":{},
        
        # 添加新的映射代码
        "8080/tcp":{}
    }
    
    # ... 省略其他不相关
    
    # 如果Ports字段本来就是空,那就不用修改
    "Ports": {
        "22/tcp": [{"HostIp": "0.0.0.0","HostPort": "5022"}],
        
         # 添加新的映射代码
        "8080/tcp": [{"HostIp": "0.0.0.0","HostPort": "18080"}],
    }
    
    # ... 省略其他不相关

docker 配置文件 config.v2.json 中 Ports 和 hostconfig.json 中 PortBindings 区别:

config.v2.json 主要用于描述容器的配置信息,Ports 字段用于指定容器内部正在监听的端口,即容器内的端口。因为 ExposedPorts 字段已经对外暴露了端口,所以如果宿主机所有ip都可以映射到暴露的端口,那么此处 Ports 字段就可以为空。如果需要设置对应的IP那么就应该设置。

hostconfig.json 主要用于描述容器与宿主机之间的交互信息, PortBindings 字段用于指定容器内部端口与宿主机端口的映射关系,用于实现容器内部服务的外部访问。

总结

docker 配置文件 config.v2.json 中 Ports 和 hostconfig.json 中 PortBindings 感觉重复了,冗余了。

config.v2.json 文件用于描述容器的配置信息,包括容器的命令、环境变量、暴露的端口等。其中的 Ports 字段指定容器内部正在监听的端口,但并不表示这些端口会映射到宿主机上。

hostconfig.json 文件用于描述容器与宿主机之间的交互信息,包括端口映射、挂载卷等。其中的 PortBindings 字段指定容器内部端口与宿主机端口的映射关系,用于实现容器内部服务的外部访问。

由于 Ports 和 PortBindings 都涉及容器的端口映射,有时候可能会造成一些冗余和混淆。一般来说,在 Docker 中,推荐使用 PortBindings 来指定容器的端口映射,而将 config.v2.json 中的 Ports 字段留空或不指定。这样可以更清晰地表达容器与宿主机之间的端口映射关系,减少重复配置。

不过,需要注意的是,具体的配置方式和文件内容可能会根据不同的 Docker 版本和工具而有所不同。为了确保正确的端口映射和容器配置,建议查阅相关的 Docker 官方文档或使用合适的 Docker 工具来设置容器的端口映射规则和其他配置。

点击查看更多文章

更新精彩文章请关注微信公众号:大胡几哥哥

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值