前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【赵渝强老师】Docker的Container网络模式

【赵渝强老师】Docker的Container网络模式

原创
作者头像
赵渝强老师
发布2024-08-13 10:15:36
1350
发布2024-08-13 10:15:36
举报
文章被收录于专栏:容器技术

  由于Docker的容器彼此之间是逻辑隔离的,所以,在安装Docker时会为在容器创建隔离的网络环境。在该隔离的网络模式环境下,运行在宿主机上的各个容器具有完全独立的网络栈,并且Docker容器的网络环境与宿主机相互隔离。通过配置使用Docker的不同网络模式,可以使容器共享宿主机的网络命名空间,也可以实现容器间的相互访问。视频讲解如下:

视频内容

  Docker一共提供了4种网络模式:bridge、container、host和none。下表对比了这4种通信模式的特点。

  在container模式下,容器之间会共享网络环境。即一个容器会使用另一个容器的网络命名空间。因此,在这种模式下,容器之间可以通过localhost或者127.0.0.1进行相互间的访问,从而提高传输的效率。

提示:由于容器共享了网络环境,因此这种网络模式节约了网络的资源。但是运行在这种网络模式下的容器,不存在网络的隔离。它的网络隔离性会处于bridge模式与host之间。

  container模式在一些特殊的场景中非常有用。例如:在Kubernetes中创建的Pod时,会首先创建Pod的基础容器;而Pod中的其他容器则采用的是container模式与基础容器进行通信。Pod中的各个容器采用localhost或者127.0.0.1进行通信,从而构造一个Pod整体。container模式的工作机制如下图所示。

  下面通过具体示例来演示如何使用container模式。

(1)使用busybox镜像创建一个容器A,并查看容器的网络信息,如下图所示。

代码语言:powershell
复制
docker run -it busybox /bin/sh
ifconfig

(2)开启一个新的命令行仓库查看容器A的ID。通过下图可以确定容器A的ID号是d71751ade532。

(3)开启一个新的命令行窗口,并使用container模式创建一个新的容器B。

代码语言:powershell
复制
docker run -it --network=container:d71751ade532 busybox /bin/sh

其中,参数—network用于指定新容器需要使用哪一个容器的网络信息,这里使用的是容器A。

(4)查看容器B的网络信息,如下图所示。

(5)通过对比会发现,容器A和容器B使用了相同的网络命名空间。这是因为在创建容器B时使用了container模式,使得容器B不再创建自己的网络命名空间,而直接使用容器A的网络命名空间。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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