Docker容器修改端口映射

https://zhuanlan.zhihu.com/p/94949253

对于已经建立的docker容器,需要新增容器对主机的端口映射,主要分为三种:

一:通过修改配置文件修改docker容器端口映射

1.使用docker ps -a命令找到要修改容器的CONTAINER ID

2.运行以下命令,进入该容器目录

docker inspect【CONTAINER ID】| grep Id
cd /var/lib/docker/containers

2.停止容器

docker stop [容器id]

3.停止主机docker服务

systemctl stop docker

4.进入2得到的文件夹内,修改hostconfig.json 和 config.v2.json

vi hostconfig.json比如新增一个 80 端口,在PortBindings下边添加以下内容,端口配置之间用英文字符逗号隔开"80/tcp": [
{"HostIp": "0.0.0.0","HostPort": "80"}
]
接着修改vi config.v2.json, 找到ExposedPorts和Ports  仿照之前内容添加端口映射
"ExposedPorts":  {"2000/tcp":   {}
},"Ports":{"2000/tcp":[{"HostIp": "0.0.0.0","HostPort":  "2000"}
]
},

5.保存之后重启docker服务和容器

systemctl start docker
docker start [docker id]

二:把运行中的容器生成新的镜像,再新建容器

1.提交一个运行中的容器为镜像

docker commit [containerid] [new_imagename]

2.运行新建的镜像并添加端口映射

docker run -d -p 8000:80  [imagename] /bin/sh

三:修改主机iptables端口映射

docker的端口映射并不是在docker技术中实现的,而是通过宿主机的iptables来实现。通过控制网桥来做端口映射,类似路由器中设置路由端口映射。

如果我们有一个容器的8000端口映射到主机的9000端口,先查看iptabes设置了什么规则:

sudo iptables -t nat -vnL

结果中有一条:

Chain DOCKER (2 references)
pkts bytes target prot opt in     out     source        destination         98  5872 RETURN  all  --  docker0 *     0.0.0.0/0     0.0.0.0/0
237 14316 DNAT    tcp  --  !docker0 *    0.0.0.0/0    0.0.0.0/0    tcp dpt:9000 to:172.17.0.3:8000

我们可以看到docker创建了一个名为DOKCER的自定义的链条Chain。而我开放8000端口的容器的ip是172.17.0.3。

也可以通过inspect命令查看容器ip

docker inspect [containerId] |grep IPAddress

我们想再增加一个端口映射,比如8081->81,就在这个链条是再加一条规则:

sudo iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:81

加错了或者想修改:先显示行号查看

sudo iptables -t nat -vnL DOCKER --line-number

删除规则3

sudo iptables -t nat -D DOCKER 3

Docker容器修改端口映射相关推荐

  1. win10 docker 容器修改端口映射

    通常容器生成后是无法通过docker界面或docker命令去修改端口映射的,以下是通过修改配置文件的方式实现: 第一步:在powershell执行以下命令找到容器hash值 docker inspec ...

  2. docker容器增加端口映射最佳实践(修改配置文件方式)

    前言: 在日常的docker运维中,经常遇到这样一个问题:已经配置好且运行的docker容器要根据业务需要增加端口映射到宿主机,如何简单有效的解决呢? 下面以mysql容器为例,详细说明操作步骤. 一 ...

  3. 解决Windows下无法对docker容器进行端口映射的问题

    解决Windows下无法对docker容器进行端口映射的问题 在安装了一个Windows下安装了docker,并尝试在其中运行Nginx服务,但映射完毕之后,在主机的浏览器中,打开localhost: ...

  4. 解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题

    解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题 参考文章: (1)解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题 (2)https://www.cnblogs. ...

  5. 解决windows系统无法对docker容器进行端口映射的问题

    解决windows系统无法对docker容器进行端口映射的问题 参考文章: (1)解决windows系统无法对docker容器进行端口映射的问题 (2)https://www.cnblogs.com/ ...

  6. docker(8):docker容器的端口映射

    docker(8):docker容器的端口映射 cker的端口映射,能保证在外部网络 访问 同一设备上不同容器时候 不会因为端口问题产生冲突. docker 可将容器对外提供服务的端口映射到 host ...

  7. Docker容器设置端口映射的方法

    概念 Docker 端口映射即映射容器内应用的服务端口到本机宿主机器. #实现 当容器中运行一些网络应用,要让外部访问这些应用时,可以通过 -P 或 -p 参数两种方式来指定端口映射. 1.随机映射 ...

  8. docker 添加端口映射_Docker容器修改端口映射

    对于已经建立的docker容器,需要新增容器对主机的端口映射,主要分为三种: 一:通过修改配置文件修改docker容器端口映射 1.使用docker ps -a命令找到要修改容器的CONTAINER ...

  9. docker 改host_所以到底该如何修改 docker 容器的端口映射!!!

    |问题背景 docker run -d -p 9999:8080 -i --name tomcat7 tomcat:7创建容器时,指定了端口映射(-p) 如果容器运行之后发现端口需要改怎么办? 当前是 ...

最新文章

  1. 俄罗斯最大搜索引擎Yandex开源了一款梯度提升机器学习库CatBoost
  2. Boost::context模块fiber的斐波那契测试程序
  3. C语言的预处理、编译、汇编、链接
  4. 爬虫开发10.scrapy框架之日志等级和请求传参
  5. android 6.0版本名字,棉花糖Marshmallow 是Android 6.0的名字
  6. VMware12提示 已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。...
  7. Struts2 Action的访问路径
  8. python可以给你干什么-Python到底可以做什么?
  9. 算法复习——数位dp(不要62HUD2089)
  10. [转载]针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结
  11. tensorflow summary demo with linear-model
  12. RK3399基于ubuntu文件系统的audio调试
  13. 大学计算机基础第五版习题和课后题答案
  14. 数据收发过程中的网络设备状态
  15. 自定义circleindicator
  16. Android 开发都有哪些好书值得一读?
  17. python爬取斗鱼主播图片
  18. win10+centos7 双系统安装
  19. 进制转换与进制转换表达式
  20. gulp自动化环境搭建,自动化解决方案

热门文章

  1. Android 集成高德地图SDK
  2. 不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_Windows 7 怎么修复 Windows 中的 Wi-Fi 连接问题,我教你(六)...
  3. PCB 线路铜皮面积(残铜率)计算的实现方法
  4. 读《如何有效阅读一本书:超实用笔记读书法》
  5. Statistical learning Week 1 什么是统计学习?
  6. C语言学习笔记第五天_项目训练
  7. 单片机触发器或非门工作原理以及用途
  8. maven 打包 程序包org.project.entity不存在
  9. 违反唯一约束条件oracle,oracle imp遇到违反唯一约束条件 (GZW.SYS_C006112)
  10. 使用 OpenCV 在 Python 中检测图像中的形状