• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >虚拟化 > docker容器启动后添加端口映射

docker容器启动后添加端口映射

作者:患恐高症的小鸟 字体:[增加 减小] 来源:互联网

本文主要包含docker,添加端口映射,docker,容器端口映射,docker,容器添加端口等服务器相关知识,患恐高症的小鸟 希望可以进行参考

概要

网上有许多人在查找关于容器启动后能否进行端口映射的问题。我曾经也问过度娘,很遗憾我没找到。本文就这个问题给出一个解决方法,旨在抛砖引玉。本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解。

结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能。

步骤

创建两个容器并进行了端口映射,结果如图所示:

假如,我start一个容器,其内部IP为172.17.0.5,并在容器内部启动了80端口。

FORWARD规则链我们不用管它,docker已经帮我们写好了,我们只需要关心NAT中的几条链即可。

查看NAT表中的PREROUTING链

从上面可以看出,iptables将满足条件的数据都转发到了DOCKER链上去了。

查看NAT表中的DOCKER链

仿照上图,我们添加一条自己的映射规则,将宿主的8082端口映射到172.17.0.5的80端口上去,规则如下:

iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8082 -j DNAT --to-destination 172.17.0.5:80

查看NAT表中的POSTROUTING链

仿照上图中的规则,书写的规则如下:

iptables -t nat -A POSTROUTING -s 172.17.0.5/32 -d 172.17.0.5/32 -p tcp -m tcp --dport 80 -j MASQUERADE

查看FILTER表中的DOCKER链

仿照上图书写规则如下:

 iptables -t filter -A DOCKER -d 172.17.0.5/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT

结果

虽然IP为172.17.0.5的容器没有开启端口映射,如下图所示:

但我们依然能够通过访问宿主机(192.168.78.238)的8082端口来访问172.17.0.5的80端口,效果如下:

使用此方法有一个缺点,不能访问localhost:8082,也就是说如果想对localhost也进行转发,需要进行额外的配置。

结论

建议大家不要像我这样去做端口映射,我这么做只是为了阐述标题。

如果大家在容器中添加了一些东西,并开启了端口,同时呢,又想多复制几个这样的容器。建议大家把容器提交成镜像,然后使用docker提供的端口映射功能。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

您可能感兴趣的文章:

  • Docker容器内不能联网的6种解决方案
  • Docker创建运行多个mysql容器的方法示例
  • 如何隔离docker容器中的用户的方法
  • Docker容器自启动的实现方法
  • Docker容器中Mysql数据的导入/导出详解
  • Docker容器使用jenkins部署web项目(总结)
  • Docker容器之内网独立IP访问的方法
  • 详解将本地docker容器迁移到服务端
  • Docker下Tomcat容器中使用Mysql的方法
  • Centos7下安装与卸载docker应用容器引擎的方法
  • 详解Docker 端口映射与容器互联
  • Docker教程:使用容器(简单示例)
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Docker实践8:Compose,docker实践compose
  • Docker buildx构建多平台镜像并推送到私有仓库的方法
  • Docker三个基本概念镜像(Image)容器(Container)仓库(Repository)
  • 什么是Docker?为什么要使用Docker
  • docker 开源的应用容器引擎
  • 如何给docker设置http代理
  • docker官方mysql镜像自定义配置详解
  • 详解Docker数据管理(数据卷&数据卷容器)
  • 如何利用Docker容器实现代理转发与数据备份详解
  • 详解Docker Swarm 在持续集成测试中的应用

相关文章

  • VMware虚拟机安装的CentOS无法上网的解决方法
  • 浅谈关于Docker容器互联的初步实践
  • OpenStack 组件的更新教程
  • Docker实践之搭建wordpress的方法
  • Docker使用阿里加速器安装centos教程
  • Docker容器与主机间的文件传输方法(复制/上传/下载)
  • 优化提高VMware虚拟机运行速度的技巧(详细图文教程)
  • kvm安装和删除虚拟机的方法
  • VMware虚拟机下linux上网的几种方式示例
  • VMware配置虚拟机静态IP地址的方法

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • docker容器里安装ssh的具体步骤
    • CentOS 5.X xen虚拟机的安装配置及基本使用
    • VirtualBox主机虚拟机互通的实现方法
    • 使用docker搭建gitlab详解
    • 服务器虚拟化基础设施:2014年争夺战
    • virtualbox虚拟机网络设置原理解析
    • 2014年服务器虚拟化市场将迎来争夺战
    • 浅谈Windows平台上Docker安装与使用
    • linux 详解useradd 命令基本用法
    • CentOS 6.4下安装部署OpenStack云计算平台的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有