前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker - 修改容器端口映射的方法

Docker - 修改容器端口映射的方法

作者头像
为为为什么
发布2022-08-06 16:39:49
2.7K0
发布2022-08-06 16:39:49
举报
文章被收录于专栏:又见苍岚又见苍岚

Docker 建立好容器后,配置并不容易修改,本文记录修改建立好的容器的端口映射的方法。

背景

  • 已经建立好了容器,配置了初始端口映射信息
  • 但是端口映射错了/多了/少了,需要调整容器的端口映射

具体方法

方法一
  • 将当前容器通过 docker commit 命令生成镜像
  • 通过镜像重新建立容器,建立时使用正确的端口映射

好处是包治百病,正规途径 缺点就是过程繁琐,不够优雅

方法二

端口映射等容器信息都是存在某个地方,通过配置文件管理的,我们仅需修改配置文件的端口信息即可完成改写

  • 以我当前的 nginx 容器为例
  • 查看需要修改的容器信息
代码语言:javascript
复制
# docker ps
CONTAINER ID IMAGE  COMMAND     CREATED   STATUS        PORTS     NAMES
5190850b4fcc nginx  "/docker"   9 hours ago   Up 9 hours    80/tcp, 0.0.0.0:9443->443/tcp, :::9443->443/tcp nginx
  • 当前容器名称 nginx,CONTAINER ID5190850b4fcc
  • 当前端口映射了 9443:443,现在我要添加一个 9442:442 的端口映射
  1. 停止容器
代码语言:javascript
复制
docker stop nginx
  1. 停止 docker 服务
代码语言:javascript
复制
systemctl stop docker
  1. 进入文件夹 /var/lib/docker/containers/{CONTAINER ID}

CONTAINER ID 容器相关的配置都在其 ID 对应的子目录里

代码语言:javascript
复制
cd /var/lib/docker/containers/5190850b4fc...
  1. 当前目录文件
代码语言:javascript
复制
# ls
5190850b4fcc...-json.log  config.v2.json   hostname  mounts       resolv.conf.hash
checkpoints  hostconfig.json  hosts     resolv.conf

我们需要修改的是 hostconfig.jsonconfig.v2.json 两个文件

  1. 修改 hostconfig.json
  • 在查看内容时,可以发现 json 中 PortBindings 键值对应的内容即是端口映射
  • 当前内容(已经映射了 9443:443)
代码语言:javascript
复制
"PortBindings":{"443/tcp":[{"HostIp":"","HostPort":"9443"}]}
  • 此时再添加 9442:442,该部分内容变为
代码语言:javascript
复制
"PortBindings":{"442/tcp":[{"HostIp":"","HostPort":"9442"}],"443/tcp":[{"HostIp":"","HostPort":"9443"}]}
  1. 修改 config.v2.json
  • 同理在 ExposedPorts 键值下添加 442 端口
代码语言:javascript
复制
"ExposedPorts":{"442/tcp":{},"443/tcp":{},"80/tcp":{}}
  • 如果NetworkSettings 下有端口信息也需要做相应修改
  1. 开启docker 服务
代码语言:javascript
复制
systemctl start docker
  1. 运行容器
代码语言:javascript
复制
docker start nginx
  • 测试是否成功
代码语言:javascript
复制
# docker ps
CONTAINER ID   IMAGE  COMMAND   CREATED        STATUS       PORTS    NAMES
5190850b4fcc   nginx  "/docker"  12 hours ago   Up 2 hours   80/tcp, 0.0.0.0:9442->442/tcp, :::9442->442/tcp, 0.0.0.0:9443->443/tcp, :::9443->443/tcp  nginx
  • 可以看到已经增加了端口映射

参考资料

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 具体方法
    • 方法一
      • 方法二
      • 参考资料
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档