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

news2024/11/28 20:36:01

一、高级网络配置

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.coloradmin.cn/o/1577664.html

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

相关文章

位置编码学习

基本概念 关于位置编码的一切&#xff1a;https://kexue.fm/archives/8130#T5%E5%BC%8F 残差连接 Post Norm 关注深度 残差的意思是给前面的层搞一条“绿色通道”&#xff0c;让梯度可以更直接地回传&#xff0c;但是在Post Norm中&#xff0c;这条“绿色通道”被严重削弱…

助贷行业的业务增长工具:CRM客户管理系统的核心作用与应用流程

在当前助贷行业&#xff0c;企业如何更好地抓住客户需求、提高业务效率、优化服务体验一直是助贷企业关注的焦点。在这个背景下&#xff0c;一款优秀的CRM客户管理系统无疑成为了实现这些目标的关键。本文将探讨这样一款专为助贷行业打造的CRM客户管理系统&#xff0c;看它是如…

极市平台 | 综述:一文详解50多种多模态图像融合方法

本文来源公众号“极市平台”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;综述&#xff1a;一文详解50多种多模态图像融合方法 0 极市导读 本工作总结了50篇论文中Lidar和camera的多模态融合的一些概念方法。笔者结合原文以及自…

重庆餐饮设计公司排行榜曝光,这些企业值得关注!

在如今饮食文化多元化、餐饮产业蓬勃发展的时代&#xff0c;餐饮设计企业扮演着至关重要的角色。一个好的餐厅设计可以为顾客提供舒适、美观的用餐环境&#xff0c;也能够提升餐厅的整体形象和竞争力。重庆作为中国西南地区的经济中心和旅游胜地&#xff0c;餐饮业发展迅速&…

用二八定律分析零售数据,不就更直观了吗?

20%的商品贡献了80%的销售金额&#xff0c;你会不会想知道这些商品的销售金额、毛利、销售金额累计占比、毛利累计占比&#xff0c;会不会想知道这些商品在各个门店的销售表现&#xff1f;看是否能进一步提高销售金额&#xff0c;提高毛利。这样的报表该怎么做&#xff1f;奥威…

JVM高级篇之GC

文章目录 版权声明垃圾回收器的技术演进ShenandoahShenandoah GC体验Shenandoah GC循环过程 ZGCZGC简介ZGC的版本更迭ZGC体验&使用ZGC的参数设置ZGC的调优 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马…

Vue - 你知道Vue中computed和watch的区别吗

难度级别:中高级及以上 提问概率:70% 二者都是用来监听数据变化的,而且在日常工作中大部分时候都只是局限于简单实用,所以到了面试中很难全面说出二者的区别。接下来我们看一下,二者究竟有哪些区别呢? 先说computed,它的主要用途是监听…

Java中网络编程,Junit单元测试详解

文章目录 软件结构C/S结构B/S结构 概述三要素IP &#xff08;银行的位置&#xff09;端口 (银行中某个柜台号)协议 (填写取款单的规则)TCP通信程序TCP通信原理客户端发送数据服务端接收数据过程图三次握手 Junit单元测试概述常见的注解使用断言概述使用 软件结构 C/S结构 客户…

Windows深度学习环境----Cuda version 10.2 pytorch3d version 0.3.0

Requirements Python version 3.8.5Pytorch version: pytorch1.6.0 torchvision0.8.2 torchaudio0.7.0 cudatoolkit10.2.89pytorch3d version 0.3.0Cuda version 10.2 感觉readme文件里的不适配&#xff0c;跟pytorch官网不同 以前的 PyTorch 版本 |PyTorch的 # CUDA 10.2 c…

HDLbits 刷题 --Popcount255

A "population count" circuit counts the number of 1s in an input vector. Build a population count circuit for a 255-bit input vector. 译&#xff1a; 一个“population count”电路用于计算输入向量中1的数量。为一个255位的输入向量构建一个人口计数电路…

【免费使用AI工具】国内AI网站集合

文章目录 文心一言腾讯混元助手讯飞星火认知大模型:文心一格(绘图)云雀大模型(文本对话)智谱AI:(GLM大模型)百川智能(百川大模型)MiniMax(ABAB大模型)万维天工ChatGPT3.5镜像网站通义千问文心一言 https://yiyan.baidu.com/ 腾讯混元助手 微信搜索【腾讯混元助手】小…

金蝶BI方案的报表,主打做得快、易理解

金蝶做数据分析报表慢、步骤多、数据不够直观&#xff1f;但奥威-金蝶BI方案的报表就不一样了&#xff0c;不仅做得快&#xff0c;还十分好理解&#xff0c;因为它做出来的是随时可以按需自助的BI智能数据可视化分析报表。 有多快&#xff1f; 注册奥威BI SaaS平台&#xff0…

提升Python网络编程效率:深入学习furl库

&#x1f340; 前言 博客地址&#xff1a; CSDN&#xff1a;https://blog.csdn.net/powerbiubiu &#x1f44b; 简介 furl 是一个 Python 库&#xff0c;用于处理 URL。它提供了一个简洁而强大的接口&#xff0c;用于构建、解析和操作 URL。本文章介绍下 furl 库的使用。 &a…

01 _ 分布式缘何而起:从单兵,到游击队,到集团军

这里先来聊聊什么是分布式。 与其直接用些抽象、晦涩的技术名词去给分布式下一个定义&#xff0c;还不如从理解分布式的发展驱动因素开始&#xff0c;我们一起去探寻它的本质&#xff0c;自然而然地也就清楚它的定义了。 这里将介绍分布式的起源&#xff0c;是如何从单台计算…

申请专利有用吗 好处

申请专利&#xff1a;一项值得考虑的策略 随着科技的快速发展和市场竞争的日益激烈&#xff0c;创新成为了企业或个人取得竞争优势的关键。在这样的背景下&#xff0c;申请专利成为了许多创新者保护自己创意和技术的重要手段。 申请专利真的有用吗&#xff1f; 申请专利可以…

Golang学习笔记

Golang学习笔记 安装Golang 来源&#xff1a;linux 安装 golang - 知乎 (zhihu.com) 由于我用的是linux系统&#xff0c;所以本文采用linux的安装方式介绍&#xff0c;如果你使用的是Windows/Mac 也可以看下该文章&#xff0c;或者自己去下列地址进行操作。 Download and in…

python--面向对象的三大特征---封装、继承、多态

1.封装&#xff1a; 1&#xff0c;在面向对象中&#xff0c;封装指的是一种安全机制&#xff0c;不让外界修改或者直接操作&#xff0c;将属性私有化&#xff1b; 如果要访问属性&#xff0c;提供公开的方法&#xff08;getter&#xff0c;setter&#xff09; 2. python的类如…

【Mybatis】Mybatis 二级缓存全详解教程

【Mybatis-Plus】Mybatis-Plus 二级缓存全详解 一&#xff0c;Mybatis-Plus介绍 MyBatis-Plus&#xff08;简称MP&#xff09;是一个基于 MyBatis 的增强工具&#xff0c;它简化了 MyBatis 的开发&#xff0c;并且提供了许多便利的功能&#xff0c;帮助开发者更高效地进行持久…

基于java+springboot+vue实现的健身房管理系统(文末源码+Lw)23-223

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装健身房管理系统软件来发挥其高效地信息处理的作用&#xf…

如何实现无感刷新(附前后端实现)?

无感刷新的核心思路&#xff1a; 无感刷新机制的目的是在用户不知情的情况下&#xff0c;自动更新其认证令牌&#xff08;通常是Access Token&#xff09;&#xff0c;以保证用户的会话不会中断。这通常涉及到两种类型的令牌&#xff1a; Access Token&#xff1a;它是用户进行…