当前位置: 首页 > news >正文

Docker容器网络模式

1.none网络

1)使用默认网络模式创建一个BusyBox容器,用于对比none网络模式;

在这里插入图片描述

测试网络,可以正常连接外网。

2)再创建一个none网络模式的BusyBox容器;

在这里插入图片描述

测试网络连接,无法连接外网。

总结:none网络模式即容器拥有自己的网络命名空间,但不为容器做任何网络配置,如没有其他的网络配置,该容器将完全独立于网络,用户可以根据需要为容器添加网卡。此模式拥有所有端口。(none网络模式配置网络)

2.host网络

1)运行一个网络模式为host的Nginx容器,并查看容器信息;

在这里插入图片描述

2)使用curl工具测试容器网站是否能够被访问。

在这里插入图片描述

3)在主机上使用浏览器访问 192.168.138.140:80

在这里插入图片描述

总结:host网络模式没有命名空间隔离,相当于docker容器与宿主机公用一个网络,使用宿主机的网卡、IP和端口信息(这点可以在主机浏览器上访问192.168.138.140:80看出),无需使用端口映射,此时容器不再拥有隔离的独立的网络栈。不拥有所有端口资源。

3.bridge网络

1)在后台运行一个命名为test-nginx的容器,并指定它的网络模式为bridge,然后使用brctl show查看网卡信息;

在这里插入图片描述

注:使用命令brctl show命令之前,需要安装网桥工具管理包,安装命令为:

yum install -y bridge-utils

在同一个服务器中,可能运行着多个业务,若这些业务都是用默认端口将会产生冲突,这时就需要容器映射不同的端口。

2)安装Apache服务;

在这里插入图片描述

3)启动服务,然后通过查看端口的形式验证Apache是否正常运行;

在这里插入图片描述

4)在后台运行一个命名为test2-nginx的Nginx容器,并将容器80端口映射到宿主机的8000端口,访问宿主机的8000端口;

在这里插入图片描述

5)访问80端口即Apache服务;

在这里插入图片描述

从以上操作可以看出,通过宿主机的8000端口可以正常访问Nginx容器,通过宿主机的80端口可以正常访问Apache服务。

通过端口映射,容器与容器、容器与宿主机的业务之间就不会出现冲突,保证业务都能够正常范围。

总结:bridge网络模式是docker默认的网络模式,受docker管理的linux桥接网络。默认同一个桥的容器可以相互通讯。

4.container网络

1)创建一个容器,命名为test2,此容器的网络模式默认为bridge,然后查看容器IP信息。

在这里插入图片描述

可以看到此容器的IP地址为172.17.0.8

2)创建一个被命名位test-container的BusyBox容器,并共享test2的网络命名空间。

在这里插入图片描述

总结:container网络模式指定新容器和已存在容器共享一个网络命名空间,这种模式拥有网络隔离,可以在一定程度上节省网络资源,容器内部依然不会拥有所有端口。

相关文章:

  • Blender学习笔记:小车狂奔动画
  • 安卓8预装可卸载应用
  • [数据结构]HashSet与LinkedHashSet的底层原理学习心得
  • Git 标签管理
  • Jupyter Markdown 插入图片
  • Kettle 安装配置
  • SpringSecurity和JWT实现认证和授权
  • 聊聊logback的ThrowableProxyConverter
  • prometheus基础,结合node_exporter监控节点
  • 【数组】-Lc15-三数之和(排序+for循环+滑动窗口)
  • 详细学习Pyqt5的10种容器(Containers)
  • 【自动化测试】pytest 用例执行中print日志实时输出
  • WEBAPI返回图片显示在VUE前端
  • 设置随机种子保证网络可复现性
  • JAVA代码优化:Spring中redis的工具类
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Android框架之Volley
  • Centos6.8 使用rpm安装mysql5.7
  • co模块的前端实现
  • docker python 配置
  • GitUp, 你不可错过的秀外慧中的git工具
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTTP中的ETag在移动客户端的应用
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JAVA SE 6 GC调优笔记
  • JavaScript设计模式与开发实践系列之策略模式
  • Python - 闭包Closure
  • python_bomb----数据类型总结
  • Selenium实战教程系列(二)---元素定位
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 驱动程序原理
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 实现菜单下拉伸展折叠效果demo
  • 在weex里面使用chart图表
  • ${factoryList }后面有空格不影响
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (转)Scala的“=”符号简介
  • (转)原始图像数据和PDF中的图像数据
  • **CI中自动类加载的用法总结
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net6使用Sejil可视化日志
  • :not(:first-child)和:not(:last-child)的用法
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @ModelAttribute 注解
  • @private @protected @public
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [2010-8-30]