浅谈Docker的四种网络模式 、容器的互通与隔离

Docker学习:容器五种(3+2)网络模式 | bridge模式 | host模式 | none模式 | container 模式 | 自定义网络模式详解 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍容器网络模式, 属于了解范畴,有助于更好的理解Docker的容器之间的访问逻辑。 疑问:为什么要了解容器的网络模式? 前言 首先,容器之间虽然不是物理隔离,但是它们彼此之间默认是不互联互通的,这也有助于保持每个容器的纯粹性,相互之间互不影响。 其次,既然使用了容器,通常情况下,容器需要与宿主机通信,或者A容器与B容器通信而B不需要知道A的存在,或者A/B两容器相互通信。 从而,就引出了本节内容,他们相互通信,就绕不开容器的网络模式 阅读详情

一.自定义docker网络

四种网络模式

host模式
container模式
none模式
bridge模式

host模式

  众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。
一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。
一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。
容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
例如,我们在10.10.101.105/24的机器上用host模式启动一个含有web应用的Docker容器,监听tcp80端口。
当我们在容器中执行任何类似ifconfig命令查看网络环境时,看到的都是宿主机上的信息。而外界访问容器中的应用,则直接使用10.10.101.105:80即可,不用任何NAT转换,就如直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

就只是共享了宿主机的ip地址和端口而已,其他的方面还是域宿主机隔离的

container模式

在理解了host模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。
新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信

none模式

这个模式和前两个不同。在这种模式下,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。
也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

bridge模式

bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network
Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。除了自己指定ip之外,它默认自动分配的ip是单调递增式的

(1).创建docker网络(自动按顺序分配ip)在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#1.创建docker网络:my_net1,默认为bridge模式,
[root@foundation66 ~]# docker network create --driver bridge my_net1
c92937ccafec29c36ae59394d992c4bb7b122138694eca459b6326e31f828643
#2.查看docker网络
[root@foundation66 ~]# docker network ls

在这里插入图片描述

#3.查看ip
[root@foundation66 ~]# ip addr

在这里插入图片描述

#4.查看docker网络的详细参数
[root@foundation66 ~]# docker network inspect my_net1

在这里插入图片描述(2).创建docker网络并指定ip与网关

#创建docker网络:my_net2,--subnet表示指定子网ip,--gateway表示指定网关
[root@foundation66 ~]# docker network create --driver bridge --subnet 172.20.0.0/24 --gateway 172.20.0.1 my_net2
df8547dce1d5c52bcd3d70832ccb4787e847e1507a9539fc73c20107f025f786
[root@foundation66 ~]# docker network ls

在这里插入图片描述
查看ip addr

在这里插入图片描述

#查看docker网络的详细参数
[root@foundation66 ~]# docker network inspect my_net2

在这里插入图片描述

二.如何让不同网桥的容器通信

实验环境:

vm3:  172.17.0.2
vm4:  172.20.0.10

1.下载并导入镜像

镜像:

ubuntu.tar


#1.在网站上下载ubuntu.tar镜像
[root@foundation66 ~]# ls
ubuntu.tar

#2.导入镜像
[root@foundation66 ~]# docker load -i ubuntu.tar 

在这里插入图片描述

docker images

在这里插入图片描述2.创建容器

#1.交互式创建并运行容器:vm3,--net表示指定docker网络(默认系统会自动指定ip,按顺序指定)
[root@foundation66 ~]# docker run -it --name vm3 --net my_net1 ubuntu
root@86e6bd28168a:/# ip addr

在这里插入图片描述

#2.交互式创建并运行容器:vm4,--ip表示指定ip
[root@foundation66 ~]# docker run -it --name vm4 --net my_net2 --ip 172.20.0.10 ubuntu
root@226797aa4fd6:/# ip addr

在这里插入图片描述测试:发现两个容器之间无法进行通信

#可以和自己的网关进行通信
root@226797aa4fd6:/# ping 172.20.0.1

在这里插入图片描述

#但不能和vm3容器进行通信
root@226797aa4fd6:/# ping 172.17.0.2

在这里插入图片描述解决方案:
在这里插入图片描述

#为vm4容器添加connect my_net1网络
[root@foundation66 ~]# docker network connect my_net1 vm4

测试:此时两个容器便能通信

在vm4容器中(my_net2):

#1.发现多了一个eth1接口
root@226797aa4fd6:/# ip addr

在这里插入图片描述

#2.可以与vm3通信
root@226797aa4fd6:/# ping 172.17.0.2

在这里插入图片描述

#3.发现会自动解析
root@226797aa4fd6:/# ping vm4

在这里插入图片描述

rhel7与ubuntu的区别:

[root@foundation66 ~]# iptables -t nat -nL

在这里插入图片描述

#rhel7镜像需要指定shell
[root@foundation66 ~]# docker run -it --name vm5 rhel7 bash
bash-4.2# exit
exit
#ubuntu镜像会自动抛出一个shell
[root@foundation66 ~]# docker run -it --name vm6 ubuntu
root@acf62a0c9186:/# exit
exit
[root@foundation66 ~]# docker rm vm5
vm5
[root@foundation66 ~]# docker rm vm6
vm6

三.容器隔离

实验环境:

server1:vm1  172.25.66.10
server2:vm1  172.25.66.11

[root@sever1 ~]# ip link set eth0 promisc on
[root@sever1 ~]# ip addr

2.开启混杂模式
在这里插入图片描述

[root@sever1 ~]# ip link set eth0 promisc on
[root@sever1 ~]# ip addr

在这里插入图片描述
3.下载并导入镜像在这里插入图片描述

4.添加docker网络
在这里插入图片描述

[root@sever1 ~]# docker network create -d macvlan --subnet 172.25.66.0/24 --gateway 172.25.66.1 -o parent=eth0 mac_net1
45112a60df10a6d28b0baeeae8146b570f734742dc09840b2041647a888bcc79
[root@sever1 ~]# docker network ls

在这里插入图片描述
5.创建容器

[root@sever1 ~]# docker run -it --name vm1 --net mac_net1 --ip 172.25.66.10 ubuntu
root@8563c690b3d8:/# ip addr

在这里插入图片描述
在server2上:(操作同server1结点)

2.开启混杂模式
在这里插入图片描述

[root@server2 ~]# ip link set eth0 promisc on
[root@server2 ~]# ip addr

在这里插入图片描述
3.下载并导入镜像
在这里插入图片描述

4.添加docker网络
在这里插入图片描述

[root@server2 ~]# docker network create -d macvlan --subnet 172.25.66.0/24 --gateway 172.25.66.1 -o parent=eth0 mac_net1
8ff7cde84b0ef2746e050ee70d7310d9b5012538e68d34a0e4ab4bc6eba4974b
[root@server2 ~]# docker network ls

在这里插入图片描述

5.创建容器

[root@server2 ~]# docker run -it --name vm1 --net mac_net1 --ip 172.25.66.11 ubuntu
root@d7b69f64e946:/# ip addr

在这里插入图片描述

测试:发现两个容器间可以相互通信

root@d7b69f64e946:/# ping 172.25.66.10

在这里插入图片描述

Docker容器如何与主机同网段其它主机互通? 对开发者而言,随着容器的普遍使用,开发者可以很方便的搭建项目的简易测试环境。所以希望可以提前固定容器的IP地址,而且一个项目有时候涉及多个容器,可能还会部署在多台机器上。docker.service配置 -H tcp://0.0.0.0:2376 --cluster-store=consul://121.4.138.199:8500 --cluster-advertise=ens33:2376 并不能正确执行,原理暂未知。更多DPDK相关学习资料有需要的可以自行报名学习,免费订阅,永久学习,或点击这里加。 阅读详情

相关推荐

RV1126 MIPI CSI-2驱动RGB888图像采集的V4L2实战解析

本文详细解析了在RV1126平台上通过MIPI CSI-2接口采集RGB888格式图像的完整V4L2实战流程。核心内容包括设备树(DTS)配置、内核驱动适配、Media Controller链路调试,以及使用v4l2-ctl工具进行图像抓取与验证的方法,旨在帮助开发者打通从硬件连接到稳定采集RGB888图像数据的关键环节。

weixin_29161719的博客 166

Docker之四种网络模式 、容器的互通与隔离

1.自定义docker网络 #查看docker网络 [root@foundation66 ~]# docker network ls #查看docker0接口 [root@foundation66 ~]# ip addr show docker0 #查看桥接 [root@foundation66 ~]# brctl show #创建docker网络:my_net1,默认为bridge模...

lilygg的博客 8090

AD9361快速锁定实战:Profile寄存器配置与频率调谐算法解析

本文深入解析了AD9361射频收发器的快速锁定(Fast Lock)功能,重点阐述了其核心机制——Profile寄存器配置。通过剖析16字节Profile结构,详细讲解了频率调谐算法,包括LO_DIV、LO_INT、LO_FRAC等关键参数的计算,以及如何通过查表获取优化的环路滤波器参数。文章提供了完整的Python算法示例和FPGA实现要点,旨在帮助工程师实现毫秒级甚至微秒级的频率切换,满足跳频通信等高性能应用需求。

weixin_29196315的博客 229

docker的网络模式混合部署(混部)

混合部署(混部)遇到的一个问题就是 1. 端口冲突问题. host模式肯定不行. 几个方案缺点: 1.单网卡多ip ,机器 监听端口时加上 (ip,端口) . 一个主机,多个软件,监听同一个端口可行. 但问题是需要软件强配置上ip. 或者修改 tcp机器接口,getIp时,分配过后就不再分配. 2. 直接从宿主机上获取ip的原则,每个docker独立的ip. host模式的变种. ...

fei33423的专栏 1032

Halcon实战:基于图像清晰度自动筛选最佳对焦图片

本文详细介绍了如何使用Halcon实现基于图像清晰度的自动筛选最佳对焦图片技术。通过分析灰度值统计和标准差等核心指标,结合实战代码示例,帮助开发者高效处理工业检测中的对焦问题,提升自动化检测的准确性和效率。

weixin_27015733的博客 438

功能安全入门:手把手教你用IEC 62380标准计算芯片失效率(附SN 29500对比)

本文深入解析了IEC 62380标准在芯片失效率计算中的应用,对比了SN 29500的差异,并提供了实战案例和避坑指南。通过详细的参数获取方法和分步计算演示,帮助功能安全工程师准确评估芯片可靠性,确保设计符合安全要求。特别适合汽车电子和工业控制领域的专业人士参考。

weixin_30363981的博客 315

docker(3)——docker网络

3.LABEL key=value 镜像描述元信息(可多条) 4.ENV key=value 设置环境变量(可多条) 5.RUN command 构建镜像时需要执行的命令(可多条) 6.WORKDIR path_dir 设置终端默认工作空间 EXPOSE port...

weixin_44743132的博客 1905

总结个人关于雷达样式的见解(脉内脉间调制)

概述 雷达有各种各样的脉内脉间调制样式,对于雷达的设计者来说,不外乎三个目的: 1、增加雷达性能,如提高测距精度,增大侦察距离等; 2、雷达的工作机制决定雷达必须采用此种样式的调制,如有些SAR雷达为保证径向测距精度,需要使用脉内宽带调制信号; 3、降低雷达被电子战装备截获的概率,也就是LPI设计。 对于雷达对抗方,则只会观察到信号存在脉内及脉间的调制。对于一般的雷达信号,通常只采用脉内调制,脉间频率调制,脉间PRI调制。 脉间调制类型 1、PD雷达的脉间特征 雷达进行脉间调制的主要是PRI..

年糕的博客 3万+

混杂模式二

工作中接触到混杂模式主要是在docker跨主机通信的环境下,结合docker跨主机通信的环境对混杂模式在做一个小结。 一.混杂模式是否生效的理解 关于设置混杂模式的资料在网上也看了一些,但是都不全面,结合最近的研究,做节点总结 1.混杂模式涉及到硬件和软件两个方面,首先硬件要开启混杂模式,硬件上面开启了混杂模式后,并不意味着混杂模式就生效了,要使混杂模式生效,还要软件层面的配置,将网口上面的...

w450093854的专栏 1565

【面试系列】数据工程师高频面试题及详细解答

本文针对数据工程师岗位,提供了详尽的面试题库和解答,分为初级、中级和高级三个层次。初级面试题主要涉及基本的数据处理和ETL工具的使用,如SQL查询、数据清洗和基本的数据建模。中级面试题重点考察数据管道设计、数据库优化和大数据平台的应用。高级面试题则深入探讨高级数据处理技术、分布式系统架构和数据湖的实现。通过这些问题和解答,候选人可以全面了解数据工程师岗位所需的技能,帮助其更好地准备面试。常考知识点总结部分则系统归纳了数据工程师岗位的关键技能领域。

在路上的专栏 2375

华为OD机试真题 新系统【Skill执行链完整性检测】

华为OD机试 新系统真题【Skill执行链完整性检测】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【Skill执行链完整性检测】

qq_45776114的博客 763

docker的四种网络模式与compose

一、Docker的四种网络模式: Docker0 (容器不是网卡) host:容器将不会虚拟出自己的网卡和IP,而是使用宿主机的IP,换个端口号。 container:创建的容器不会创建自己的网卡和IP,而是和另一个容器共享IP、端口。(同生共死)“多用于网站日志监控” None:该模式关闭了容器的网络功能。”无连接”无法联网 bridge:此模式会为每一个容器分配、设置lP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及lptables nat表配置与宿主机通信。 代码实

weixin_47151646的博客 4136

ReAct框架到多智能体协作:OpenClaw任务分解机制的演进与突破

AI的最终价值是落地,是帮用户解决实际问题,而不是停留在聊天界面里。从ReAct框架到多智能体协作,OpenClaw的任务分解体系走了一条非常务实的路线:所有的优化都是为了解决真实场景里的痛点,所有的设计都是为了让用户用起来更省心。很多人说现在的AI还是“人工智障”,那是因为他们没有用到真正能落地的AI产品。当你用过OpenClaw,体验过你说一句话它就能把一整套复杂任务全都做完的感觉,你就会明白:AI代替人做重复性工作的时代,已经真的来了。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 311

【docker系列】四种基础网络模式及自定义网络

在docker网络的顶层设计层面,包含了三个核心部分。Sandbox(沙盒):提供了独立的容器虚拟网络栈,包括端口套接字、IP路由表、防火墙、DNS配置。 它的核心作用在于将容器网络与宿主机网络隔离开,形成了完整的独立的容器网络环境。...

字母哥博客 4428

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Docker的四种网络模式

Docker 有 bridge、none、host、container 四种网络模式

m0_54232496的博客 794

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

揭秘Docker网络模式:如何实现高效安全的容器隔离?

掌握Docker容器的网络隔离方法,提升应用安全与性能。详解bridge、host、none等网络模式原理与适用场景,解析容器间通信机制与防火墙策略配置。实现高效安全的Docker容器的网络隔离,保障微服务稳定运行,值得收藏。

FuncTide的博客 888

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Docker网络模式解析

docker四种网络模式解析以及对应的小demo

m0_62946761的博客 1万+

使用Docker实现容器之间的互通

这样c3 ping c1就成功啦!比如说以后要是在公司,某位领导在不是同一网络下时需要使用他自己的电脑查看项目,那么我们就只需把他电脑服务器添加进来就好了。

m0_67094505的博客 5146

Docker四种网络模式

实现原理 Docker使用Linux桥接(参考《Linux虚拟网络技术》),在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。 Dock...

数据矿工的博客 259

docker的四种网络模式

docker的四种网络模式Bridge 桥接模式(默认的网络设置)Host 网络模式container模式none模式 我们在使用docker run创建Docker容器时,可以用–net选项指定容器的网络模式,Docker有以下4种网络模式: 模式 配置 host模式 使用–net=host指定。 container模式 使用–net=container:NAME_or_ID指定。 none模式 使用–net=none指定。 bridge模式 使用–net=bridge指定,默

hwjos的博客 326

Docker篇之docker容器之间的通信

自从Docker容器工具诞生以来,当我们在正式线上环境进行容器部署以及容器管理任务时,通常容器之间是需要进行数据通信的,来支撑正常业务运转。因此容器间的通信也随之成为热点,也是生产环境中的重中之重。 容器间的网络通信可分为两大方面:单主机容器上的相互通信,跨主机的容器相互通信。 一、Docker单主机容器通信 1、假设通过容器ip访问 【不可行】 由于docker容器每次在重启后,其IP会发生变化。因此通过容器ip访问不可行。 2、假设通过宿主机的ip:port访问 【不可行】 通过宿主机的ip:port

小橙子的笔记屋 7403

docker-compose 如何访问外部容器? docker容器间访问的网络设置浅谈

前言 docker-compose是用于定义和运行多容器 Docker 应用程序的工具,通过docker-compose可以方便地协调多个容器的运行。 一般在使用docker-compose启动服务时,被同一个docker-compose.yml定于的服务(容器)会运行在一个隔离环境中,也就是说在这个环境中的容器是不能直接访问(如果没有设置的话)当前docker-compose外部的其它容器的,那么如何设置才能使compose中的容器访问外部容器呢? 本文以能够使compose启动的容器可以访问docker

soulfire的博客 1万+

docker的四种网络方式

在使用docker run创建容器时,可以使用--net(全称--network)选项指定容器的网络模式,docker一共有4中网络模式: 输入命令查看已有的网络 docker network ls 如下图会看到下面的网络(名称可能会不同) 1:bridge模式,--net=bridge(默认)。 bridge网卡是dokcer网络的默认设置。安装完docker,系统会自...

诗水人间 14万+

五、docker的网络模式

Docker默认有四种网络模式

如果喜欢的话,点个赞吧~ 1052

docker的网络模式

Bridge 模式:默认模式,适用于大多数单机场景,支持端口映射和自定义网络。Host 模式:容器共享宿主机网络栈,性能高,但安全性较低。None 模式:容器没有网络配置,适用于完全隔离或自定义网络需求的场景。Container 模式:多个容器共享网络栈,适用于紧密协作的容器。Macvlan 模式:容器直接连接到物理网络,拥有自己的 MAC 和 IP。Overlay 模式:用于跨主机的分布式网络,适用于集群环境。自定义 Bridge 模式:创建用户定义的网络,提供更好的网络隔离和容器间通信。

qq_41917355的博客 1858
上一篇: 精简版harbor仓库的搭建
下一篇: Docker-compose实现多容器的负载均衡
小杨118709
博客等级 码龄8年 141粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值