在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

怎样实现Docker容器的底层技术

157次阅读
没有评论

共计 1961 个字符,预计需要花费 5 分钟才能阅读完成。

今天就跟大家聊聊有关怎样实现 Docker 容器的底层技术,可能很多人都不太了解,为了让大家更加了解,丸趣 TV 小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

为了更好地理解容器的特性,我们将讨论容器的底层实现技术。
cgroup 和 namespace 是最重要的两种技术。cgroup 实现资源限额,namespace 实现资源隔离。

cgroup

cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。相信你已经猜到了:前面我们看到的 –cpu-shares、-m、–device-write-bps  实际上就是在配置 cgroup。

cgroup 到底长什么样子呢?我们可以在 /sys/fs/cgroup 中找到它。还是用例子来说明,启动一个容器,设置  –cpu-shares=512

查看容器的 ID

在 /sys/fs/cgroup/cpu/docker 目录中,Linux 会为每个容器创建一个 cgroup 目录,以容器长 ID 命名

目录中包含所有与 cpu 相关的 cgroup 配置,文件 cpu.shares 保存的就是  –cpu-shares  的配置,值为 512。

同样的,/sys/fs/cgroup/memory/docker 和 /sys/fs/cgroup/blkio/docker 中保存的是内存以及 Block IO 的 cgroup 配置。

namespace

在每个容器中,我们都可以看到文件系统,网卡等资源,这些资源看上去是容器自己的。拿网卡来说,每个容器都会认为自己有一块独立的网卡,即使 host 上只有一块物理网卡。这种方式非常好,它使得容器更像一个独立的计算机。

Linux 实现这种方式的技术是 namespace。namespace 管理着 host 中全局唯一的资源,并可以让每个容器都觉得只有自己在使用它。换句话说,namespace 实现了容器间资源的隔离。

Linux 使用了六种 namespace,分别对应六种资源:Mount、UTS、IPC、PID、Network 和 User,下面我们分别讨论。

Mount namespace

Mount namespace 让容器看上去拥有整个文件系统。

容器有自己的  /  目录,可以执行  mount  和  umount  命令。当然我们知道这些操作只在当前容器中生效,不会影响到 host 和其他容器。

UTS namespace

简单的说,UTS namespace 让容器有自己的 hostname。默认情况下,容器的 hostname 是它的短 ID,可以通过  -h  或  –hostname  参数设置。

IPC namespace

IPC namespace 让容器拥有自己的共享内存和信号量(semaphore)来实现进程间通信,而不会与 host 和其他容器的 IPC 混在一起。

PID namespace

我们前面提到过,容器在 host 中以进程的形式运行。例如当前 host 中运行了两个容器:

通过  ps axf  可以查看容器进程

所有容器的进程都挂在 dockerd 进程下,同时也可以看到容器自己的子进程。如果我们进入到某个容器,ps  就只能看到自己的进程了。

而且进程的 PID 不同于 host 中对应进程的 PID,容器中 PID=1 的进程当然也不是 host 的 init 进程。也就是说:容器拥有自己独立的一套 PID,这就是 PID namespace 提供的功能。

Network namespace

Network namespace 让容器拥有自己独立的网卡、IP、路由等资源。我们会在后面网络章节详细讨论。

User namespace

User namespace 让容器能够管理自己的用户,host 不能看到容器中创建的用户。

在容器中创建了用户 cloudman,但 host 中并不会创建相应的用户。

首先通过大量实验学习了容器的各种操作以及容器状态之间如何转换,然后讨论了限制容器使用 CPU、内存和 Block IO 的方法,最后学习了实现容器的底层技术:cgroup 和 namespace。

下面是容器的常用操作命令:

create       创建容器  

run         运行容器  

pause       暂停容器  

unpause     取消暂停继续运行容器  

stop         发送 SIGTERM 停止容器  

kill         发送 SIGKILL 快速停止容器  

start       启动容器  

restart     重启容器  

attach      attach 到容器启动进程的终端  

exec         在容器中启动新进程,通常使用 -it 参数  

logs         显示容器启动进程的控制台输出,用 -f 持续打印  

rm           从磁盘中删除容器

看完上述内容,你们对怎样实现 Docker 容器的底层技术有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注丸趣 TV 行业资讯频道,感谢大家的支持。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1961字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 午夜宅男在线永久免费观看网 | 成人亚洲综合 | 中文字幕在线免费视频 | www.日本在线播放 | 欧美va天堂在线电影 | 精品久久人人妻人人做精品 | 久久精品一区二区三区不卡牛牛 | 免费a级毛片无码a∨免费软件 | 忘忧草资源www | 欧美成人形色生活片 | 啪啪激情 | 亚洲另类激情综合偷自拍图 | 久久久久99精品成人片试看 | a色视频| 久久99国产亚洲精品观看 | 国产三级做爰在线播放最爱 | 秋霞电影网午夜鲁丝片无码 | 欧美疯狂黑人xxxxbbbb | 日本不卡免费新一二三区 | 99久久免费看国产精品 | 亚洲国产av无码综合原创国产 | 中国杭州少妇xxxx做受 | 日韩 亚洲 欧美 中文 高清 | 国产成人无码一区二区三区在线 | 美女被爆羞羞网站在免费观看 | 国内精品久久久久影院优 | 在线va免费看成 | 女人被狂躁到高潮视频免费网站 | 无套内谢老熟女 | 国产成人h综合亚洲欧美在线 | 一区二区三区高清视频在线观看 | 亚洲第一在线播放 | 99精品欧美一区 | 久久久男女野外野战 | 国产黑色丝袜在线观看下 | 国内久久久久影院精品 | 后入内射国产一区二区 | 午夜99| 国产av一区二区三区天堂综合网 | 中文字幕人妻色偷偷久久 | 国产成人久久一区二区三区 |