Docker容器(六)网络配置与数据卷

一、高级网络配置

1.1概述

当 Docker 启动时,会自动在主机上创建一个 `docker0` 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。

同时,Docker 随机分配一个本地未占用的私有网段(在 [RFC1918](https://tools.ietf.org/html/rfc1918) 中定义)中的一个地址给 `docker0` 接口。比如典型的 `172.17.42.1`,掩码为 `255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。

当创建一个 Docker 容器的时候,同时会创建了一对 `veth pair` 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 `eth0`;另一端在本地并被挂载到 `docker0` 网桥,名称以 `veth` 开头(例如 `vethAQI2QT`)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。

注意:一般在使用docker网桥(br1dge)实现容器与容器通信时,都是站在一个应用角度进行容器通信 

1.2网络信息命令

查看网络信息

docker network ls

创建一个网桥

docker network create -d bridge 网桥名称

删除一个网桥

docker network rm 网桥名称

查看网桥详细

docker inspect els

1.3容器之前使用网络通信

查询当前网络配置

创建桥接网络

启动容器指定使用网桥

- docker run -d -p 8890:80 --name nginx001 --network info nginx 
- docker run -d -p 8891:80 --name nginx002 --network info nginx `注意:一旦指定网桥后--name指定名字就是主机名,多个容器指定在同一个网桥时,可以在任意一个容器中使用主机名与容器进行互通`

二、数据卷配置

2.1说明

数据卷` 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

- `数据卷` 可以在容器之间共享和重用

  • - 对 `数据卷` 的修改会立马生效
  • - 对 `数据卷` 的更新,不会影响镜像
  • - `数据卷` 默认会一直存在,即使容器被删除

> 注意:`数据卷` 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。

2.2数据卷特性

Docker镜像由多个只读层叠加⽽成,容器启动时,Docker会加载只读镜像层并在镜像栈顶部添加⼀个读写层.

如果运⾏中的容器修改现有的⼀个已经存在的⽂件,那么该⽂件将会从读写层下面的只读层复制到读写层,该⽂件的只读版本依然存在,只是已经被读写层中该⽂件的副本所隐藏,这就是所谓的“写时复制”机制.

数据卷意义

关闭并重启容器,其数据不受影响; 但删除容器,则修改部分会全部丢失.
存在问题: 
1 存在与联合⽂件系统(UFS)中,不易于宿主机访
问; 
2 容器间数据共享不便; 
3 删除容器其数据会丢失.

解决⽅案: “卷”
卷”是容器上的⼀个或多个“目录”,此类目录可
绕过联合⽂件系统,与宿主机某目录“绑定”

Volume可以在运⾏容器时即完成创建与绑定操作,前提是拥有声明。
Volume的初衷是数据持久化。

 

2.3在容器中使⽤Volumes

# 创建一个名为data的Docker容器,并使用Docker管理的卷进行挂载
docker run -d --name data -v <Mount-dir> tomcat# 使用docker inspect命令查看data容器的挂载信息
docker inspect -f {{.Mounts}} data# 创建一个名为data的Docker容器,并使用主机目录进行绑定挂载
docker run -d --name data -v <Host-dir>:<Volume-dir> tomcat# 创建一个名为data的Docker容器,并使用联合卷进行挂载
docker run -d --name data --volume-from <Container> tomcat

举例

2.4数据卷命令

创建数据卷

docker volume create my-vol

 查看数据卷

docker volume inspect my-vol  
[{"CreatedAt": "2020-11-25T11:43:56+08:00","Driver": "local","Labels": {},"Mountpoint": "/var/lib/docker/volumes/my-vol/_data","Name": "my-vol","Options": {},"Scope": "local"}
]

挂载数据卷

docker run -d -P --name web  -v my-vol:/usr/share/nginx/html  nginx

删除数据卷

docker volume rm my-vol

三、Docker网络通信

3.1概述

容器与容器之间

 容器访问外部⽹络

iptables -t nat -A POSTROUTING -s 
172.17.0.0/16 -o docker -j MASQUERADE 

外部⽹络访问容器(DNAT) 

docker run -p 80:80 apache 
iptables -t nat -A PREROUTING -m 
addrtype --dst-type LOCAL -j DOCKER 
iptables -t nat -A DOCKER ! -i 
docker0 -p tcp -m tcp --dprot 80 =j 
DNAT --to-destination 172.17.0.2:80

 3.2Namespace隔离

进⾏namespace API操作的四种⽅式

  • clone()
  • setns() 
  • unshare() 
  • /proc下的部分⽂件 

clone()

 查看/proc/[pid]/ns

ls -l /proc/$$/ns

setns()

 unshare()

fork()

 3.3Namespace

UTS

UNIX Time-sharing System 
主机名和域名

IPC

创建⼀个信息队列 
ipcmk -Q 
查看已经开启的消息队列 
ipcs -q

PID

echo $$ 

Mount 

 挂载 
mount <src> <dest> 
查看 
mount 
-> mtab

Network

`netstat -antlp`、`ifconfig`和`ip addr`都是用于显示和配置网络接口的命令,但它们各自有不同的特点和用途。具体如下:

1. **`netstat -antlp`**:
   - `-a`:显示所有活动的网络连接以及监听的 socket。
   - `-n`:以数字形式显示地址和端口号。
   - `-t`:仅显示TCP连接。
   - `-l`:仅显示监听套接字(服务器等待接入连接)。
   - `-p`:显示与每个连接相关的进程/程序名称。

2. **`ifconfig`**:
   - 主要用于配置和显示当前网络接口的状态信息,如IP地址、子网掩码等。
   - 可以对网络设备进行启用(up)或关闭(down)操作。
   - 支持添加(add)和删除(del)网络设备的IP地址。

3. **`ip addr`**:
   - 是iproute2套件的一部分,提供更全面的网络配置功能。
   - 支持配置IPv4和IPv6网络接口,而老版本的`ifconfig`只支持IPv4(新版本已扩展支持IPv6)。
   - 显示详细的网络接口信息,包括IP地址、子网掩码、广播地址等。

 User

  • id -u 
  • id -g

3.4Docker网络模式修改

/etc/systemd/system/docker.service  dockerd ...

-b, --bridge 
指定Docker使⽤的⽹桥设备. 默认情况下,Docker会⾃
动创建和使⽤docker0⽹桥设备,通过此参数可以使⽤已
经存在的设备; 


--bip 
指定docker0的IP和掩码,使⽤CIDR格式进⾏定义,
如: 10.10.10.10/24; 


--dns 
配置容器的DNS,在启动Docker进⾏时添加,所有容器全
部⽣效.

docker run ...(只针对当前容器)

--dns 
指定启动的容器的DNS; 
--net 
⽤于指定容器的⽹络通信⽅式,有以下四个值: 
1.bridge: Docker默认⽅式,⽹桥模式; 
2.none: 容器没有⽹络栈; 
3.container: 使⽤其它容器的⽹络栈,Docker容器会加⼊其
它容器的network namespace; 
4.host: 表示容器使⽤Host的⽹络,没有⾃⼰独⽴的⽹络栈。
容器可以完全访问Host⽹络,不安全.

 端⼝映射 
-p、-P选项的使⽤格式

/etc/docker/daemon.json

# 定义一个字典,存储网络配置信息
network_config = {"bip": "192.168.1.5/24",  # IP地址和子网掩码"fixed-cidr": "10.20.0.0/16",  # 固定CIDR网络范围"fixed-cidr-v6": "2001:db8::/64",  # 固定CIDR IPv6网络范围"mtu": "1500",  # 最大传输单元"default-gateway": "10.20.1.1",  # 默认网关IP地址"default-gateway-v6": "2001:db8:abcd::89",  # 默认网关IPv6地址"dns": ["10.20.1.2", "10.20.1.3"]  # DNS服务器列表
}

3.5常⻅隔离⽅式

 3.6容器的跨主机通信

宿主机配置

  • IP转发
  • 配置iptables

IP转发

查看 

cat /proc/sys/net/ipv4/ip_forward 

0: 关闭; 
1: 开启.
配置⽂件 

/etc/sysctl.conf 
net.ipv4.ip_forward = 1

⽣效配置 

sysctl -p /etc/sysctl.conf

重启⽹络 

配置iptables

# 设置iptables的FORWARD链的策略为ACCEPT,允许所有转发的数据包通过
iptables -P FORWARD ACCEPT# 清空并删除所有非内置的iptables链和规则
iptables -F && iptables -X# 清空并删除所有非内置的nat表中的链和规则
iptables -F -t nat && iptables -X -t nat# 执行一次性的systemd命令,用于重新加载配置文件
one shot systemd# 将/etc/profile.d目录添加到系统环境变量中,以便在系统启动时自动执行其中的脚本
/etc/profile.d

 3.7容器⽹络⽅案

  • pipework
  • weave
  • openvswitch
  • flannel
  • calico

pipework


创建⽹桥 
物理⽹卡实现的⽹桥
赋予容器⼀个真实内⽹IP
NAT 
Host-only 

 

优点 
配置简单,不依赖第三⽅软件; 
缺点 
与主机在同⼀⽹段,IP规划问题; 
需要有⽹段控制权,在⽣产环境中不易实现; 
不容易管理; 
兼容性不佳.

Weave

创建⼀个虚拟的⽹络,⽤于将运⾏在不同宿主机的Docker容器进⾏通信.
https://github.com/weaveworks/weave

 优点 
配置简单; 
缺点 
与主机在同⼀⽹段,IP规划问题; 
容器的IP需要⼿动⼆次操作.

Open vSwitch

⾼质量的多层虚拟交换机;
主要由C实现;
⼤规模⽹络⾃动化可以通过编程进⾏扩展;
简称: ovs. 

 

安装⽹桥管理⼯具

bridge-utils 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建第一个ArkTS之基本语法概述

在初步了解了ArkTS语言之后&#xff0c;我们以一个具体的示例来说明ArkTS的基本组成。如下图所示&#xff0c;当开发者点击按钮时&#xff0c;文本内容从“Hello World”变为“Hello ArkUI”。 图1 示例效果图 本示例中&#xff0c;ArkTS的基本组成如下所示。 图2 ArkTS的基本…

C++ 封装

1.封装 cpp认为万事万物都可以封装 封装将属性和行为作为一个整体&#xff0c;表现生活中的事物。 将属性和行为加以权限控制。 语法&#xff1a; class 类名{ 访问权限: 属性或者行为 } //学生类 class Student { public:void setName(string name) {m_name name;}vo…

人工智能技术创业机会有哪些?

&#x1f482; 个人主页: 同学来啦&#x1f91f; 版权: 本文由【同学来啦】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助&#xff0c;欢迎关注、点赞、收藏和订阅专栏哦 文章目录 &#x1f96d; 一、城市治理&#x1f34e; 二、社交创新&#x1f3…

如何申请苹果个人开发者账户

1、苹果手机下载Developer APP&#xff0c;登录后&#xff0c;账户-注册-支付688 2、查看邮箱&#xff0c;会有邮件提醒上传身份证正反面&#xff0c;上传成功后会有邮件回复 3、审核时间为2天&#xff0c;如果没回复&#xff0c;及时联系客服&#xff0c;秒回复 https://de…

分享快速搭建鸿蒙应用的几种方式

鸿蒙今年快速发展&#xff0c;特别是不再兼容安卓&#xff0c;鸿蒙原生应用成为大家关注的重点。今天分享几个如何实现快速开发鸿蒙App的方法。 鸿蒙开发有多种开发模式&#xff1a;一种是使用ArkTS声明式&#xff1b;如果这种感觉还需要花时间学习的话&#xff0c;那么另一种…

MySQL分库分表的方式有哪些

目录 一、为什么要分库分表 二、什么是分库分表 三、分库分表的几种方式 1.垂直拆分 2. 水平拆分 四、分库分表带来的问题 五、分库分表技术如何选型 一、为什么要分库分表 如果一个网站业务快速发展&#xff0c;那这个网站流量也会增加&#xff0c;数据的压力也会随之而…

“筑爱助残 快乐出游”带残疾人之家的残疾人出游活动

为拓宽残疾人的视野、增强残疾人的自信和勇气&#xff0c;感受外面世界的美好和多彩&#xff0c;帮助他们融入社会拥抱大自然&#xff0c;重拾美好生活的信心&#xff0c;营造残健互助的社会氛围。4月10日&#xff0c;嘉善蒲公英志愿者团队组织爱心司机开展以“筑爱助残 快乐出…

如何实现异地公网环境访问本地部署的支付宝沙箱环境调试支付SDK

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【CSS】CSS三大特性、盒子模型

目录 CSS三大特性 1、层叠性 2、继承性 3、优先级 盒子模型 1、网页布局的本质 2、盒子模型&#xff08;Box Model&#xff09;组成 3、边框&#xff08;border&#xff09; 3.1、边框的使用 3.2、表格的细线边框 3.3、边框会影响盒子实际大小 4、内边距&#xff0…

通过前缀和来看golang的acm输入输出

前缀和 问题引入 package mainimport ("fmt" )func main() {var n, q, l, r intfmt.Scan(&n, &q)a : make([]int, n)ap : make([]int64, n 1)ap[0] 0for i : 0; i < n; i {fmt.Scan(&a[i])ap[i 1] ap[i] int64(a[i])}for j : 0; j < q; j {f…

创建型模式--1.单例模式【巴基速递】

1. 巴基的订单 在海贼世界中&#xff0c;巴基速递是巴基依靠手下强大的越狱犯兵力&#xff0c;组建的集团海贼派遣公司&#xff0c;它的主要业务是向世界有需要的地方输送雇佣兵&#xff08;其实是不干好事儿&#xff09;。 自从从特拉法尔加罗和路飞同盟击败了堂吉诃德家族 &…

【ArcGIS学习笔记】ArcMap打开就卡在文档加载界面好久不动,打开很慢,要好长时间

Arcmap之前用得好好&#xff0c;后来打开就卡在文档加载界面&#xff0c;然后界面就关闭了&#xff1f; - 知乎针对这一情况&#xff0c;主要有下面五种解决方法。其中&#xff0c;对于大部分用户而言&#xff0c;前两种方法大概率是可以解决问题的&#xff1b;…https://www.z…

RocketMQ的docker安装和SpringBoot的集成

1.Docker安装 1.1创建docker-compose.yml文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports:- 9876:9876networks:rmq:aliases:- rmqnamesrvrmqbroker:image: foxiswho/rocketmq:brokercontainer_name: rmqbrokerports…

C++模板初阶(个人笔记)

模板初阶 1.泛型编程2.函数模板2.1函数模板的实例化2.2模板参数的匹配规则 3.类模板3.1类模板的实例化 1.泛型编程 泛型编程&#xff1a;编写与类型无关的通用代码&#xff0c;是代码复用的一种手段。模板是泛型编程的基础。 //函数重载 //交换函数的逻辑是一致的&#xff0c…

SpringBoot学习笔记四

SpringBoot学习笔记四-监听机制 1. SpringBoot监听器1.1 无需配置1.1.1 CommandLineRunner使用1.1.2 ApplicationRunner的使用1.1.3 CommandLineRunner与ApplicationRunner的区别 1.2 需要创建META-INF文件&#xff0c;并在其中创建spring.factories&#xff0c;配置相关的信息…

【CSDN创作优化2】内嵌图片 `<img>` 标签`height`和`width`属性

【CSDN创作优化2】内嵌图片 标签height和width属性 写在最前面<img> 标签简介控制图像尺寸&#xff1a;height和width属性实例为什么要指定height和width注意事项 使用百分比进行响应式设计小结 &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字…

【赛题】2024年“认证杯”数模网络挑战赛赛题发布

2024年"认证杯"数学建模网络挑战赛——正式开赛&#xff01;&#xff01;&#xff01; 赛题已发布&#xff0c;后续无偿分享各题的解题思路、参考文献、完整论文可运行代码&#xff0c;帮助大家最快时间&#xff0c;选择最适合是自己的赛题。祝大家都能取得一个好成…

[dvwa] file upload

file upload 0x01 low 直接上传.php 内容写<? eval($_POST[jj]);?> 用antsword连 路径跳两层 0x02 medium 添加了两种验证&#xff0c;格式为图片&#xff0c;大小限制小于1000 上传 POST /learndvwa/vulnerabilities/upload/ HTTP/1.1 Host: dvt.dv Content-Le…

WORD——效率提升10倍的18个神操作

1、万能F4键 在Word中F4 键的功能是重复上一步操作&#xff0c;也就说上一步你做了什么操作&#xff0c;只要按F4键&#xff0c;它就会自动帮你重来一次。比如&#xff0c;合并单元格&#xff0c;你再也不用反复去点合并按钮&#xff0c;只要合并第一个单元格后&#xff0c;剩…

四种算法(麻雀搜索算法SSA、螳螂搜索算法MSA、红尾鹰算法RTH、霸王龙优化算法TROA)求解机器人路径规划(提供MATLAB代码)

一、机器人路径规划介绍 移动机器人&#xff08;Mobile robot&#xff0c;MR&#xff09;的路径规划是 移动机器人研究的重要分支之&#xff0c;是对其进行控制的基础。根据环境信息的已知程度不同&#xff0c;路径规划分为基于环境信息已知的全局路径规划和基于环境信息未知或…