Docker 的网络与数据管理

Docker 网络实现原理

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

docker 网络模式

host

使用host模式容器使用宿主机的网络直接公开服务,这意味着如果你在容器运行一个web服务,那么它直接绑定主机的网络接口上,而不是通过docker进行任何网络转发

总结:与宿主机共享网络命名空间/网络协议栈。

container

使用这种模式允许容器共享另一个容器的网络命名空间,这意味着两个容器可以有相同的网络接口和IP地址,如果他们共享是同一个网络命名空间的话。

总结:多个容器之间共享一个networknamespace。

node

这是最简单的网络模式,此网络模式表示容器拥有自己的网络命名空间,但不会进行任何网络配置,这实际上给用户完全自主权来自配置及容器的网络。

总结:自闭空间。

birdge

这是docker默认网络模式,每个新创建的容器都将从该网络中分配一个IP地址,此网络模式允许所有docker容器(宿主机)之间相互通信。

总结:通过veth对连接容器与docker0网桥,网桥分配给容器IP,同时docker0作为“局域网”内容器网关,最后和宿主机网卡通信。

外加:自定义

docker允许用户创建自己定义的网络,用户可以定义网络范围,子网,路由等参数,这种类型的网络使得我们的用户可以更好的对容器网络进行控制和隔离。

docker容器状态

docker 主要有7个状态1、created		已创建,还未运行的容器
2、running		正在运行中的容器
3、restartin	容器正在启动中
4、removing	    容器正在迁移中
5、paused		停止状态的容器
6、exited		已暂停状态的容器
7、dead			死亡 主要是操作系统出现异常或断电关机等有可能引发的状态

命令

随机映射端口		docker run -d --name test1 -P nginx
指定映射端口		docker run -d --name test2 -p 43000:80 nginx
查看docker网络列表		docker network ls
查看容器进程号				 docker inspect -f '{{.State.Pid}}' 容器id
查看容器的进程、网络、文件系统等命名空间编号			
ls -l /proc/进程/ns根据容器id创建相同网络的容器
docker run -itd --name test2 --net=container:容器id centos:7 创建自定义网络,先自定义网络,再使用指定IP运行docker
docker network create --subnet=172.18.0.0/16 --opt 
"com.docker.network.bridge.name"="docker1"  mynetwork
docker run -itd --name test4 --net mynetwork --ip 172.18.0.10 centos:7 

资源控制

CPU 资源控制

cgroups,是一个非常强大的linux内核工具,他不仅可以限制被 namespace 隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。 所以 cgroups(Control groups)实现了对资源的配额和度量。

cgroups有四大功能:

1、资源限制:可以对任务使用的资源总额进行限制。

2、优先级分配:通过分配的cpu时间片数量以及磁盘IO带宽大小,实际上相当于控制了任务运行优先级。

3、资源统计:可以统计系统的资源使用量,如cpu时长,内存用量等。

4、任务控制:cgroup可以对任务执行挂起、恢复等操作。

设置CPU使用率上限

查看当前cpu使用率

cd /sys/fs/cgroup/cpu/docker/容器id/

cat cpu.cfs_quota_us 表示该cgroups限制占用的时间

cat cpu.cfs_period_us cpu分配的周期

设置50%的比例分配CPU使用时间上限

可以重新创建一个容器并设置限额

docker run -itd --name test6 --cpu-quota 50000 centos:7 /bin/bash

或者

echo 50000 > cpu.cfs_quota_us

cgroup资源限制

cgroup 控制的是内核资源--》 间接控制中cpu 的资源--》控制这 中的进程资源--》 docker容器的资源--》 docker容器内应用的资源

控制的主题包括cpu 、内存、I/O。

主要介绍的CPO资源的控制,而CPU资源控制的方式主要有:

1、cpu-shares 权重指的的是多个容器同一个cpu下,被分配到CPu资源的机会占比。

2、cpu-period周期指的是 CPU在给与当前管理,控制的容器分配资源时,CPU的分配周期 ,默认周期1S,此项配置可以运行时直接指定。

3、quest-cpus 指定容器,仅能使用指定CPU,比如 0、1、2、3, 假设使用0和2可以用这种方式指定cpu核心。

Docker 的数据管理

管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。
1.数据卷

数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。数据卷的使用类似于 Linux 下对目录进行的 mount 操作。

2.数据卷容器

如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器是一个普通的容器,专门提供数据卷给其他容器挂载使用。

创建一个容器作为数据卷容器
docker run --name web2 -v /data1 -v /data2 -it centos:7 /bin/bash
echo "this is web2" > /data1/abc.txt
echo "THIS IS WEB2" > /data2/ABC.txt使用 --volumes-from 来挂载 web2 容器中的数据卷到新的容器
docker run -it --volumes-from web2 --name web3 centos:7 /bin/bash
cat /data1/abc.txt
cat /data2/ABC.txt

端口映射

在启动容器的时候,如果不指定对应的端口,在容器外是无法通过网络来访问容器内的服务。端口映射机制将容器内的服务提供给外部网络访问,实质上就是将宿主机的端口映射到容器中,使得外部网络访问宿主机的端口便可访问容器内的服务。

随机映射端口(从32768开始)
docker run -d --name test2 -p 43000:80 nginx		指定映射端口

容器互联

容器互联是通过容器的名称在容器间建立一条专门的网络通信隧道。简单点说,就是会在源容器和接收容器之间建立一条隧道,接收容器可以看到源容器指定的信息。

创建并运行源容器取名web1
docker run -itd -P --name web1 centos:7 /bin/bash	创建并运行接收容器取名web2,使用--link选项指定连接容器以实现容器互联
docker run -itd -P --name web2 --link web1:web1 centos:7 /bin/bash	    --link 容器名:连接的别名进web2 容器, ping web1
docker exec -it web2 bash
ping web1

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

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

相关文章

栈的模拟实现(Java)

目录 1、 栈的概念2、栈的使用3、栈的模拟实现 1、 栈的概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last I…

Linux 部署1Panel 现代化运维管理面板进行公网远程访问

🎬 鸽芷咕:个人主页 🔥 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透2.1 使用一键脚本安装命令 2.2向系统添加服务2.3 启动cpolar服务…

爬虫Python

文章目录 基本数据类型bytes类型python数据类型转换(必会!!!) python运算符(必会!!!)python数字数学函数(必会!!&#xff…

uni-app:实现view元素强制换行(解决长字符和英文字符不换行问题)

效果 换行前 换行后 核心代码 word-wrap: break-word; 或 word-break: break-all; 完整代码demo <template><view><view class"all_style"><view class"line1">aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</view>…

ubuntu离线编译安装cmake 3.22.5(could not fonud OPENSSL) and cmake-versinon查不到版本问题

1、首先去cmake官网下载压缩包,例如: cmake-3.22.5.tar.gz 2、拉到ubuntu进行解压: tar -zxcf cmake-3.22.5.tar.gz 3、cd 进入目录 cd cmake-3.22.5 4、执行configure可执行文件 ./configure 如果在编译过程中出现报错:Could NOT findOpenSSL,原因可能是缺少ssl库 按…

独享IP地址的层级划分和管理:打造稳定高效的网络架构

在网络架构设计中&#xff0c;独享地址的层级划分和管理是一项关键任务。它不仅能提供更好的网络性能和安全性&#xff0c;还能帮助企业实现更高效的资源管理。本文将为您详细介绍独享地址的层级划分和管理的重要性&#xff0c;并提供具体的方案和实际操作建议。 第一部分&…

高压放大器在纳米材料中的应用有哪些

高压放大器是一种重要的电子设备&#xff0c;可以用于增强输入信号的电压。在纳米材料领域&#xff0c;高压放大器也具有广泛的应用。下面西安安泰将介绍高压放大器在纳米材料中的应用&#xff0c;并探讨其可行性和潜在的研究方向。 纳米材料传感器&#xff1a;高压放大器在纳米…

10月11日,每日信息差

今天是2023年10月11日&#xff0c;以下是为您准备的16条信息差 第一、SHEIN在广州投资百亿的湾区供应链项目提速。该湾区供应链项目将建设集运营仓储、备货、拣货、分拨、发货等为一体的供应链仓储物流中心 第二、国内首条碳化法荧光级氧化镁中试生产线在青海建成。据了解&am…

大数据面试题:Spark和Flink的区别

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 可回答&#xff1a;1&#xff09;Spark Streaming和Flink的区别 问过的一些公司&#xff1a;杰创智能科技(2022.11)&#xff0c;阿里蚂蚁(2022.11)&…

微服务10-Sentinel中的隔离和降级

文章目录 降级和隔离1.Feign整合Sentinel来完成降级1.2总结 2.线程隔离两种实现方式的区别3.线程隔离中的舱壁模式3.2总结 4.熔断降级5.熔断策略&#xff08;根据异常比例或者异常数&#xff09; 回顾 我们的限流——>目的&#xff1a;在并发请求的情况下服务出现故障&…

【踩坑】hive脚本笛卡尔积严重降低查询效率问题

前一阵子查看我们公司的大数据平台的离线脚本运行情况, 结果发现有一个任务居然跑了一天多, 要知道这还只是几千万量级的表, 且这个任务是每天需要执行的 于是我把hive脚本捞出来看了下, 发现无非多join了几个复杂的子查询, 应该不至于这么久, 包括我又检查了是不是没有加上每…

MTK平台闪光灯相关信息

&#xff08;1&#xff09;概念 MTK打闪一般分为预闪、主闪两个阶段。相应的执行一次拍照会有预闪、主闪两次开灯。预闪可以用来防红眼(red-eye reduction)。闪光时使环境发生变化&#xff0c;会按新的光线条件&#xff08;有闪光时&#xff09;重新测光&#xff0c;来实现更精…

python- excel 创建/写入/删sheet+花式遍历

文章目录 前言python- excel 创建/写入/删sheet花式遍历1. excel 创建2. 写入excel3. 创建写入excel demo实战4. 删除sheet5. excel 花式遍历 demo实战5.1. 获取 A1的值5.2. 获取指定列的切片数据&#xff0c;获取 B1到B5的值5.3. 循环整个excel的这个sheet5.4. 遍历指定行&…

从零开始学习:如何使用Selenium和Python进行自动化测试?

安装selenium 打开命令控制符输入&#xff1a;pip install -U selenium 火狐浏览器安装firebug&#xff1a;www.firebug.com&#xff0c;调试所有网站语言&#xff0c;调试功能 Selenium IDE 是嵌入到Firefox 浏览器中的一个插件&#xff0c;实现简单的浏览器操 作的录制与回…

【C++ techniques】Reference counting(引用计数)

Reference counting的两个技术动机&#xff1a; 为了简化heap objects周边的簿记工作&#xff0c;当对象运用了引用计数技术&#xff0c;一旦不再有任何人使用它&#xff0c;它便自动销毁自己&#xff0c;也因此&#xff0c;reference counting建构出垃圾回收机制的一个简单形…

Unity2017适配安卓12

测试版本为Unity2017.4.25f1 1.在自定义AndroidManifest.xml&#xff08;位于Assets\Plugins\Android\&#xff09;中添加android:exported"true" <?xml version"1.0" encoding"utf-8"?> <manifestxmlns:android"http://schema…

LuatOS-SOC接口文档(air780E)-- http - http 客户端

示例 -- 使用http库,需要引入sysplus库, 且需要在task内使用 require "sys" require "sysplus"sys.taskInit(function()sys.wait(1000)local code,headers,body http.request("GET", "http://www.example.com/abc").wait()log.info(…

探索 Redis 与 MySQL 的双写问题

在日常的应用开发中&#xff0c;我们经常会遇到需要使用多种不同类型的数据库管理系统来满足各种业务需求。其中最典型的就是Redis和MySQL的组合使用。 这两者拥有各自的优点&#xff0c;例如Redis为高性能的内存数据库提供了极快的读写速度&#xff0c;而MySQL则是非常强大的…

归一化与标准化的区别

文章目录 一、公式二、代码三、区别四、结论 一、公式 归一化 X ′ x − m i n m a x − m i n X { x-min \above{1pt} max-min} X′max−minx−min​ X ′ ′ X ′ ∗ ( m a − m i ) m i X X * (ma-mi) mi X′′X′∗(ma−mi)mi 标准化 X ′ x − m e a n s t d X…

常见的C/C++开源数值计算库

1. Eigen Eigen 是一个线性算术的 C 模板库&#xff0c;包括&#xff1a;vectors, matrices, 以及相关算法。功能强大、快速、优雅以及支持多平台。 2. Blaze Blaze 是一个开源、高性能 C 数学库&#xff0c;用于密集和稀疏算术。凭借其最先进的 智能表达式模板 实现&#x…