docker网络管理

1、常用的网络模式

Docker 容器的网络默认与宿主机、与其他容器都是相互隔离。

1.1、host

使用主机的网络命名空间,这意味着容器与主机共享同一个IP地址和端口号。使用host网络可以提高容器的网络性能,但是会降低容器的隔离性(容器直接使用宿主机网络栈的方式)。

实际上是被隔离在它自己的 Network Namespace 当中的。网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routing Table)和 iptables 规则。对于一个进程来说,这些要素,构成了它发起和响应网络请求的基本环境。需要指出的是,作为一个容器,它可以声明直接使用宿主机的网络栈(–net=host),不开启 Network Namespace。

这个容器启动后,直接监听的就是宿主机的 80 端口。
docker run -it  -d --net=host --name nginx-host nginx:latest
docker run -it -d --net=host --name nginx-host01 nginx:latest

1.2、none

none 网络就是什么都没有的网络,一些对安全性有求高并且不需要联网的应用可以使用 none 网络。
比如:某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。

docker network list
docker run -it -d --net=none --name nginx-none01 busybox:latest
docker exec -it nginx-none01 sh
ip a
exit;

1.3、bridge

是Docker默认的网络类型,使用Docker守护进程创建一个虚拟的网桥,它将容器连接在同一个网络上。通过bridge网络,Docker将为容器分配一个IP地址,并为它们提供DNS解析服务。容器之间可以使用容器名称或IP地址进行通信。

是一个工作在数据链路层(Data Link)的设备,主要功能是根据 MAC 地址学习来将数据包转发到网桥的不同端口(Port)上。

理解容器链接到Docker0网桥上

Veth Pair,以两张虚拟网卡(Veth Peer)的形式成对出现的。并且,从其中一个“网卡”发出的数据包,可以直接出现在与它对应的另一张“网卡”上,哪怕这两个“网卡”在不同的 Network Namespace 里。被用作连接不同 Network Namespace 的“网线

1.3.1、查看Veth Pair

cat /sys/class/net/eth0/iflink

1.3.2、ip link

1.3.3、路由

ping 192.168.101.200,它发出的请求数据包,首先经过 docker0 网桥出现在宿主机上。然后根据宿主机的路由表里的直连路由规则(192.168.101.0/24 via ens33)),对 192.168.101.200 的访问请求就会交给宿主机的 ens33 处理。

2、同宿主机的容器通信

2.1、通过容器名称互联

在同一个宿主机上的容器之间可以通过自定义的容器名称相互访问,由于容器在启动的时候其内部ip地址是DHCP随机分配的,而给容器起一个固定的名称,比较固定。

docker run -it -d  --name web01 -P nginx-ping:latest
docker run -it -d  --name web02 -P   -v /root/nginx/:/usr/share/nginx/html/ -v /root/nginx:/nginx01   nginx:latest
docker run -it -d  --name web03 -P   -v /root/nginx/:/usr/share/nginx/html/ -v /root/nginx:/nginx01  --link web01 nginx:latest
docker run -it -d  --name web03 -P   -v /root/nginx/:/usr/share/nginx/html/ -v /root/nginx:/nginx01  --link web01 web01-link  nginx:latest

2.2、创建桥接网络

如果要指定子网和 IP 范围,可以使用 --subnet 和 --ip-range 选项。
例如,以下命令创建了一个名为 mybridge 的 Docker 网桥,其子网为 192.168.0.0/16,
IP 范围为 172.100.0.0/24:
docker network create --subnet=172.100.0.1/16 --ip-range=172.100.0.0/24 docker1
#查看网络
docker network list
#删除网桥网络
docker network rm  bridge02
#创建容器指定网络
docker run -it -d  --name  web05 --network bridge02  -P   -v /root/nginx/:/usr/share/nginx/html/ -v /root/nginx:/nginx01  nginx:latest
cp /etc/apt/sources.list /etc/apt/sources.list.bak

cat <<EOF>/etc/apt/sources.list
deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian-security buster/updates main
deb-src http://mirrors.aliyun.com/debian-security buster/updates main
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
EOF


apt-get clean -y 
apt-get update -y 

apt-get install -y iproute2 inetutils-ping

桥接网络之间通信

iptables -vnL
#将docker0网桥和br-c21cee0640a5网桥连接起来,以便两个网桥中的容器可以相互通信。
sudo iptables -I FORWARD -i docker0 -o br-8a4879e3f035  -j ACCEPT
#允许来自docker0网桥的数据包转发到br-c21cee0640a5网桥,并且允许来自br-c21cee0640a5网桥的数据包转发到docker0网桥
sudo iptables -I FORWARD -i br-c21cee0640a5 -o docker0 -j ACCEPT
#添加网卡
docker network connect docker0 web01  
删除网卡
docker network disconnect docker1 web01

3、跨主机容器通信

3.1、环境备注

宿主机

宿主机02

容器网络

01

192.168.101.200

172.15.0.0/16

02

192.168.101.201

172.200.0.0/16

3.2、添加路由和防火墙规则

# 添加一个到201宿主机的路由,并将其设置为永久路由
sudo ip route add 10.200.0.0/16 via 192.168.101.201 dev ens33
sudo ip route add 10.100.0.0/16 via 192.168.101.201 dev ens33 persist

#添加防火墙
iptables -nvL
#将容器的源 IP 地址转换为宿主机的 IP 地址,以便第二台宿主机上的容器能够正确地回复数据包:
sudo iptables -A FORWARD -s 172.100.0.0/16 -d 10.200.0.0/16 -j ACCEPT

#删除路由
ip route del 10.200.0.0/16 via 192.168.101.201 dev ens33
#添加一个到200宿主机的路由,并将其设置为永久路由
sudo ip route add 172.15.0.0/16 via 192.168.101.200 dev ens33
sudo ip route add 172.15.0.0/16 via 192.168.101.200 dev ens33 persist

#添加防火墙,将容器的源 IP 地址转换为宿主机的 IP 地址,以便第一台宿主机上的容器能够正确地回复数据包:
sudo iptables -A FORWARD -s 10.200.0.0/16 -d 172.15.0.0/16 -j ACCEPT

#删除路由
ip route del 172.15.0.0/16 via 192.168.101.200 dev ens33

3.4、Docker提供了两种方式:端口映射和使用外部网络。

  1. 端口映射:将容器内部的端口映射到主机的端口上,使得可以从外部网络访问容器内部的服务。使用端口映射,可以将容器的端口与主机的端口进行映射,从而实现容器与外界网络的通信。
  2. 使用外部网络:可以使用Docker提供的外部网络,或者使用主机的网络接口。通过使用外部网络,可以让容器与外界网络进行通信,从而让容器内部的服务可以被外部网络访问。

3.5、overlay覆盖网络(了解)

用于跨主机容器之间的通信,它可以将多个Docker守护进程连接在一起,形成一个虚拟的网络。使用overlay网络,容器可以在多个主机之间进行通信,这对于构建分布式应用程序非常有用。

在已有的宿主机网络上,再通过软件构建一个覆盖在已有宿主机网络之上的、可以把所有容器连通在一起的虚拟网络。所以,这种技术就被称为:Overlay Network(覆盖网络)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23445.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈电解电容在电路设计中的作用

谈起电解电容我们不得下多了解一下它的作用 1、滤波作用 在电源电路中&#xff0c;整流电路将交流变成脉动的直流&#xff0c;而在整流电路之后接入一个较大容量的电解电容&#xff0c;利用其充放电特性(储能作用)&#xff0c;使整流后的脉动直流电压变成相对比较稳定的直流电…

C++是如何从代码到游戏的

有一个Student类。C怎么创建一个学生类的对象&#xff1f; // 嗯我会&#xff01;有两种方式&#xff1a; Student s; Student *s2 new Student("张三");现在这学生的行为有&#xff1a;吃饭&#xff0c;睡觉&#xff0c;上网课。现在你执行个上网课的行为&#xf…

次氯酸消毒剂制备中的全氟醚橡胶密封耐腐蚀电动阀门解决方案

摘要&#xff1a;次氯酸作为是一种新型消毒剂&#xff0c;近年来广泛应用于医疗卫生机构、公共卫生场所和家庭的一般物体表面、医疗器械、医疗废物等。由于次氯酸的酸性和强氧化性&#xff0c;使得次氯酸生产制备过程中会给流量调节阀门带来腐蚀并影响寿命和控制精度&#xff0…

UE5电脑配置要求是什么?2023虚幻5电脑配置推荐

虚幻引擎对于游戏创作者来说已经不再陌生。该软件为程序员构建和设计终极视频游戏&#xff0c;以创建壮观的游戏场景和流畅的动作。此外&#xff0c;它还处理音效、物理碰撞效果和控制。尤其是人工智能对角色的控制。与其他软件一样&#xff0c;Unreal Engine也有最低系统要求才…

数据类型的陷进,从表象看本质!

哪些值转为布尔值为false 1、undefined&#xff08;未定义&#xff0c;找不到值时出现&#xff09; 2、null&#xff08;代表空值&#xff09; 3、false&#xff08;布尔值的false&#xff0c;字符串"false"布尔值为true&#xff09; 4、0&#xff08;数字0&…

notepad++查询指定内容并复制

背景说明 记录一下使用notepad进行文本内容查找以及替换的相关场景,简单记录方便后期查看,场景内容: 1.从指定的给出内容中筛选出所有的人员id集合 2.将每一行后面添加逗号 1.从指定的给出内容中筛选出所有的人员id集合 要求从指定的给出内容中筛选出所有的人员id集…

如何增加网站权重?有效提高网站权重的技巧方法

权重对于网站优化来说非常的重要&#xff0c;那什么是网站权重呢&#xff1f;网站权重是指搜索引擎给网站&#xff08;包括网页&#xff09;赋予一定的权威值&#xff0c;对网站&#xff08;含网页&#xff09;权威的评估评价。一个网站权重越高&#xff0c;在搜索引擎所占的份…

Spring 初始导读

1.Spring初始 1. 为什么要学框架 学习框架相当于从"小作坊"到"工厂"的升级 , 小作坊什么都要做 , 工厂是组件式装配 , 特点就是高效. 2.框架的优点展示(SpringBoot Vs Servlet) 使用SpringBoot 项目演示框架相比 Servlet 所具备的以下优点: 无需配置 …

【原创】生成文件MD5图像,类似于GitHub的像素风格头像

前言 我想通过文件的md5生成关于这个md5的图像&#xff0c;类似于GitHub的随机像素头像&#xff0c;用处是让这个md5更加直观&#xff0c;也能用于生成各种用户头像&#xff0c;跟GitHub一样。 网上搜了一下&#xff0c;没有现成的方法&#xff0c;只能有一篇类似的文章可以借…

Android 图片编码之必备技能

在进行 Android 开发时&#xff0c;不可避免地会接触到许多图片格式&#xff0c;例如 JPEG、PNG 等。就以 JPEG 格式为例&#xff0c;它是一种有损压缩模式&#xff0c;使用 YCbCr 的颜色空间来保存色彩信息。当需要在屏幕上显示图片时&#xff0c;会将 JPEG 数据解码成 RGB 进…

如何对项目进度进行跟踪?逐步完善项目计划

我接手了一个小项目&#xff0c;但是无论是我还是领导&#xff0c;都认为这是个简单的项目&#xff0c;最多一月时间就能搞定。但是&#xff0c;随着时间推移&#xff0c;三个月也没有将内容完善。于是我进行了反思总结&#xff0c;我认为存在如下问题&#xff1a; 1、资源协…

spring源码篇(八)事务的原理

文章目录 前言基本操作验证 Spring事务的传播机制特殊的机制说明NOT_SUPPORTEDNESTEDSUPPORTS 源码加载事务自动配置类要不要加注解&#xff1a;EnableTransactionManagement配置类说明 EnableTransactionManagement 做了什么AutoProxyRegistrar做了什么创建的代理类是jdk动态代…

【Nodejs】使用Nodejs搭建HTTP服务,并实现公网远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 转载自内网穿透工具的文章&#xff1a;使用Nodejs搭建HTTP服务&#xff0c;并实现公网远程访问「内网穿透」 前言 Node.js…

数据结构与算法·第2章【线性表】

线性结构具有以下基本特征&#xff1a; 有唯一的一个被称为首元素&#xff08;或头元素&#xff09;的元素&#xff0c;没有直接前驱&#xff1b;有唯一的一个被称为尾元素&#xff08;或尾节点&#xff09;的元素&#xff0c;没有直接后继。 数据元素之间存在一对一的线性关…

磐维数据库panweidb单节点服务器在centos7.9安装(研发环境)

一、系统环境优化 1.1 关闭SELINUX # 修改配置文件 cat /etc/selinux/config | grep -i SELINUX SELINUXdisabled# 关闭SELINUX setenforce 0 1.2 内核参数优化 vi /etc/sysctl.conf 添加# panweidb net.ipv4.tcp_max_tw_buckets 10000 net.ipv4.tcp_tw_reuse 1 net.ipv4.t…

ssm+springboot+java高校图书馆图书借阅座位预约管理系统系统

陕理工图书馆管理系统包括多个功能模块&#xff1a;图书类别管理模块、图书管理模块、读者管理模块、借阅管理模块、预约管理、推荐管理。管理员登入后&#xff0c;维护图书借阅的信息。本文介绍了使用Java技术开发陕理工图书馆管理系统的设计与实现过程&#xff0c;首先对实现…

【源码分析】【netty】FastThreadLocal 为什么快?

写在前面 接下来几篇文章&#xff0c;我们来聊一聊 netty 相关的。这里作者想先从 FastThreadLocal 开始说&#xff0c;而不是可能大家更熟悉的 reactor 啊&#xff0c;责任链设计啊&#xff0c;ByteBuf 啊&#xff0c;池化啊等等。不过虽然说 FastThreadLocal 熟知程度不如其…

2023年湖北建筑架子工报名流程?报名需要什么资料?考试一次过?

2023年湖北建筑架子工报名流程&#xff1f;报名需要什么资料&#xff1f;考试一次过&#xff1f; 建筑架子工证是建筑行业必备的证书之一&#xff0c;它是证明持有人可以在建筑工地上从事搭建脚手架、模板等施工工作的重要证明。启程别告诉你架子工的报名流程和资料。 百度搜一…

示范性微电子院校“抢人”,芯片赛道黄不了!

经常看到有同学问&#xff0c;“国内高校微电子专业最好的是哪所高校?”“想搞数字ic设计去哪所大学好呢&#xff1f;” 其实国内28所示范性微电子学院都是非常不错的选择。 2015年&#xff0c;九所示范性微电子院校名单公布&#xff0c;包括了清华大学、北京大学、复旦大学…

【7 Vue3 – Composition API】

1 认识Composition API Options API的弊端 setup函数 2 setup函数的参数 3 setup简单使用 1 注意不再有响应式数据 要做到响应式数据需要在数据定义时使用ref包装数据,并且在使用时,使用value解包 2 注意template要使用的数据或者函数,必须要return 返回才能被使用 <templa…