默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。

容器访问外部实现

容器所有到外部网络的连接,源地址都会被NAT成本地系统的IP地址。这是使用 iptables 的源地址伪装操作实现的。

查看主机的 NAT 规则。

$ sudo iptables -t nat -nL
...
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  172.17.0.0/16       !172.17.0.0/16
...

其中,上述规则将所有源地址在 172.17.0.0/16 网段,目标地址为其他网段(外部网络)的流量动态伪装为从系统网卡发出。MASQUERADE 跟传统 SNAT 的好处是它能动态从网卡获取地址。

外部访问容器实现

容器允许外部访问,可以在 docker run 时候通过 -p-P 参数来启用。

不管用那种办法,其实也是在本地的 iptable 的 nat 表中添加相应的规则。

使用 -P 时:

$ iptables -t nat -nL
...
Chain DOCKER (2 references)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:49153 to:172.17.0.2:80

使用 -p 80:80 时:

$ iptables -t nat -nL
Chain DOCKER (2 references)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.17.0.2:80

注意:

  • 这里的规则映射了 0.0.0.0,意味着将接受主机来自所有接口的流量。用户可以通过 -p IP:host_port:container_port-p IP::port 来指定允许访问容器的主机上的 IP、接口等,以制定更严格的规则。
  • 如果希望永久绑定到某个固定的 IP 地址,可以在 Docker 配置文件 /etc/default/docker 中指定 DOCKER_OPTS="--ip=IP_ADDRESS",之后重启 Docker 服务即可生效。

转载于:https://www.cnblogs.com/navysummer/p/8455113.html

Docker端口映射实现相关推荐

  1. docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint quirky_allen

    docker端口映射或启动容器时报错  Error response from daemon: driver failed programming external connectivity on e ...

  2. docker端口映射或启动容器时报错 driver failed programming external connectivity on endpoint

    docker端口映射或启动容器时报错 Error response from daemon: driver failed programming external connectivity on en ...

  3. docker端口映射失效解决方法

    docker端口映射失效解决方法 参考文章: (1)docker端口映射失效解决方法 (2)https://www.cnblogs.com/erfsfj-dbc/p/11815972.html 备忘一 ...

  4. docker端口映射或启动容器时报错Error response from daemon: Container is not running

    docker端口映射或启动容器时: docker exec -it 7c5a2350c4cb /bin/bash 出现了错误: Error response from daemon: Containe ...

  5. Docker端口映射无法访问的问题排查

    概述 前些天,老大让升级Docker版本,后面折腾了一番,成功升级到最新版本Docker,Docker容器啥的都跑起来了,以为一切顺利了,结果第二天就发现容器映射到宿主机的端口无法访问.在宿主机用 c ...

  6. docker端口映射,批量删除容器

    docker端口映射 http://blog.csdn.net/yjk13703623757/article/details/69212521 批量删除容器 http://blog.csdn.net/ ...

  7. Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)

    端口映射 映射容器内应用的服务端口到本地宿主主机 1. 从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的.当容器中运行一些网络应用,要 ...

  8. docker 端口映射 udp_Docker领路,走进压力测试的现代化 | 51上头条

    摘要:Docker技术为软件开发.测试提供了非常便捷的功能,使用现成的镜像让我们的工作事半功倍.本文针对在项目中进行压力测试使用Docker进行说明,重点记录从手工搭建环境,到使用Docker提高测试 ...

  9. docker 端口映射 及外部无法访问问题:开启IP转发从而解决

    docker容器内提供服务并监听8888端口,要使外部能够访问,需要做端口映射. docker run -it --rm -p 8888:8888 server:v1 此时出现问题,在虚机A上部署后, ...

  10. [视频教程] docker端口映射与目录共享运行PHP

    当我们在容器中安装完环境以后,需要在宿主机的端口上访问到容器中的端口,这时候就需要做端口映射.在开发代码的时候,需要频繁的修改代码,因此要把宿主机上的代码目录共享到容器中,这样容器里面就能访问的到代码 ...

最新文章

  1. ES和JS的区别,以及JavaScript的基本组成
  2. Oracle Database 12c(12.1) Beta已经开始内部测试
  3. 通过用 .NET 生成自定义窗体设计器来定制应用程序
  4. JBoss Portal上的“ Hello World” portlet
  5. WORD 表格后面的空白页删不掉?
  6. GDALSetProjection使用的一个注意事项
  7. 4 合并grid列_在 Power BI Desktop 中合并数据
  8. 在其他的电脑上配置绿色Jre+tomcat运行环境
  9. Markdown编辑器初步使用
  10. linux下安卓刷机,linux下安卓刷机脚本
  11. ~是什么意思 在C语言中,~0代表什么
  12. 实用性室内地图导航软件
  13. 【教学类-20-02】20221203《世界杯16强国旗-定量版》(大班)
  14. 一个函数叫random.sample
  15. 7-4 韩信点兵 (10 分)
  16. 机器学习笔记 - 时间序列的季节性
  17. 微前端框架 之 qiankun
  18. 类似 Teambition 的9大最佳项目管理软件
  19. 何帅:“在线”思考,王坚的云计算心理学
  20. win10下VMware15安装centos7详细步骤及遇到的问题

热门文章

  1. 征战蓝桥 —— 2017年第八届 —— C/C++A组第10题——油漆面积
  2. ROS探索总结(四)——简单的机器人仿真
  3. 【机器视觉】 convert_vector_to_tuple算子
  4. 【Linux网络编程】网络协议入门
  5. 【Qt】Qt中QJsonValue类
  6. .so是什么文件_安卓 so 文件解析详解
  7. 自认为有必要学习的Sql 总结,积累 mybatis
  8. 每天一道LeetCode-----n皇后问题
  9. Mysql(6)——数据库中表相关操作(2)
  10. MobileGestalt.h 头文件