成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

docker容器的原理分析

瀏覽:63日期:2024-10-28 15:20:44
01 容器的本質是什么?

今天的重點問題是講述清楚什么是容器。

要理解容器的概念,首先我們需要知道什么是進程?當我們在Linux操作系統執行一個程序,這個程序可能是一個二進制文件,它被調用的時候,變成了計算機內存中的數據、寄存器中的值、堆棧中的指令、以及各種設備狀態信息的一個集合。像這樣的一個計算機執行環境的綜合,我們稱之為進程。

容器,就是為這個進程提供一個'邊界',理解成白話,就是把這個進程'包'起來,它本質上是通過約束和修改進程的一些動態表現實現的這個'包'的動作。

不難看出來,容器是一種特殊的、有'邊界'的進程。

現在我們來看一個MySQL容器的進程特點。

1、先查看下我們機器上mysql容器的containerID值,如下:

[root@VM-16-13-centos service]# docker ps | grep mysql4784586d01e0mysql 'docker-entrypoint...' 3 months agoUp 3 months k8s_mysql.16d54d16_mysql-pd7jr_default_0032bce0-2b0f-11eb-98ad-5254002dbd85_d775f414

可以看到,containerID的值是4784586d01e0

2、首先我們通過docker exec命令(關于這條命令的介紹,下面會有講述)進入一個容器里面,ps -ef命令查看進程:

[root@VM-16-13-centos service]# docker exec -it 4784586d01e0 bashroot@mysql-pd7jr:/# ps -efUIDPID PPID C STIME TTY TIME CMDmysql1 0 0 2020 ?03:20:20 mysqldroot 882 0 0 09:42 ?00:00:00 bashroot 888 882 0 09:46 ?00:00:00 ps -ef

可以發現,mysqld這個進程的進程號是1.

這里我要多嘴一下:

1、docker exec -it 4784586d01e0 bash

這條指令是告訴容器,我要進入這個容器里面,并運行一個bash的指令。

2、如果你的docker里面不支持ps命令,你需要使用下面的命令安裝一下ps這個指令:

apt-get update & apt-get install procps

然后我們退出到容器外面,再次查看mysqld進程的進程號:

[root@VM-16-13-centos service]# ps -ef|grep mysqlroot 5152 5059 0 2020 pts/5 00:00:00 mysql -uroot -px xxxxroot 13644 24879 0 2020 pts/4 00:00:00 mysql -uroot -px xxxxpolkitd 18853 18837 0 2020 ?03:20:25 mysqld

發現進程號是18853。

可以得到一個結論,mysqld進程在容器里面和容器外面執行的結果不一樣。

為什么會這樣?

其本質是docker容器中的進程被隔離在了一個新的環境中,使得這些進程只能看到重新計算過的PID號。前面我們說過,docker本質上是通過約束和修改進程的一些動態,將一個物理機上的進程'包'起來,我們看到的這個現象,就是'包'的結果。

那么Linux是如何將物理機進程進行的約束和修改呢?這里引入新的概念:

對于 Docker 等大多數 Linux 容器來說,Linux 的Cgroups 技術是用來制造約束的主要手段,而Namespace 技術則是用來修改進程視圖的主要方法。

02 Cgroup技術和Namespace技術介紹

Namespace技術主要是為容器提供資源隔離用的。Namespace這個功能實現的方法比較簡單,通常情況下,我們創建Linux進程的時候,系統會執行一個clone的命令,類似:

int pid = clone(main_function, stack_size, SIGCHLD, NULL);

它返回的就是我們創建的進程的PID號。

而Namespace技術就是在Linux創建進程的時候,多了一個參數,這個新參數暫且稱之為newid,這樣,在容器內,我們看到的進程的PID號,就是這個newid了。這個Namespace我們稱之為PID Namespace。

除了這個Namespace,還有其他的,例如mount Namespace,Network Namespace等,分別是為了隔離掛載點和隔離網絡的。

當然,不是所有的資源都能夠被namespace化,例如時間和操作系統內核,就是一個服務器上的所有容器共享的。

容器一旦開始運行,我們需要控制它使用的機器資源,例如磁盤、內存、CPU等,否則它可能會耗盡物理機的資源,導致一些系統進程發生崩潰。Cgroup技術就是專門為Linux進程限制資源使用的。它的全程是Linux Control Group,它以文件和目錄的形式存放在/sys/fs/cgroups目錄下,如下:

[root@VM-16-13-centos service]# ls -l /sys/fs/cgroup/total 0drwxr-xr-x 4 root root 0 Nov 20 11:38 blkiolrwxrwxrwx 1 root root 11 Nov 20 11:38 cpu -> cpu,cpuacctlrwxrwxrwx 1 root root 11 Nov 20 11:38 cpuacct -> cpu,cpuacctdrwxr-xr-x 5 root root 0 Nov 20 11:38 cpu,cpuacctdrwxr-xr-x 3 root root 0 Nov 20 11:38 cpusetdrwxr-xr-x 4 root root 0 Nov 20 11:38 devicesdrwxr-xr-x 3 root root 0 Nov 20 11:38 freezerdrwxr-xr-x 3 root root 0 Nov 20 11:38 hugetlbdrwxr-xr-x 5 root root 0 Nov 20 11:38 memorylrwxrwxrwx 1 root root 16 Nov 20 11:38 net_cls -> net_cls,net_priodrwxr-xr-x 3 root root 0 Nov 20 11:38 net_cls,net_priolrwxrwxrwx 1 root root 16 Nov 20 11:38 net_prio -> net_cls,net_priodrwxr-xr-x 3 root root 0 Nov 20 11:38 perf_eventdrwxr-xr-x 4 root root 0 Nov 20 11:38 pidsdrwxr-xr-x 4 root root 0 Nov 20 11:38 systemd

不同的文件目錄里面,存儲不同的資源種類被限制的值,其中,比較常用的:

blkio:為塊設備設置i/o限制,一般用于磁盤等設備

cpuset:為進程分配單獨的CPU核心和對應的內存節點

memory:為進程設定內存使用的限制。

當我們通過命令啟動容器之后,操作系統會把這個docker進程對應的PID填寫到對應控制組的文件中,從而控制當前進程使用的CPU資源值。

03 容器、鏡像和倉庫之間的關系

Docker 包括三個基本概念:

鏡像(Image) 容器(Container) 倉庫(Repository)

docker容器的原理分析

這三部分組成了Docker的整個生命周期,如上圖所示。

docker鏡像包含了文件系統,類似于虛擬機的鏡像,它是只讀的模板。這個文件系統也通常被稱之為rootfs,通常包含了bin、etc、sys、usr等一系列目錄。

docker容器是由鏡像實例化而來的,這和我們學習的面向對象的概念十分相似,我們可以把鏡像想象成類,把容器想象成類經過實例化后的對象,這樣就非常好理解鏡像和容器的關系了。

docker倉庫:類似與代碼倉庫,是Docker集中存放鏡像文件的場所

這個關系可以更加清楚的表述為:

docker容器的原理分析

以上就是詳解docker容器的概念的詳細內容,更多關于docker容器的概念的資料請關注好吧啦網其它相關文章!

標簽: Docker
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲国产精品一区二区第一页 | 欧美另类变人与禽xxxxx| 中文字幕一区三区| 欧美精品偷拍| 精品奇米国产一区二区三区| 狠狠色狠狠色合久久伊人| 国产精品亚洲不卡a| 日韩伦理免费电影| 国模精品一区二区三区| 日本一区二区三级电影在线观看| 成人精品亚洲人成在线| 欧美成人r级一区二区三区| 精品一区二区三区免费毛片爱 | 在线播放亚洲一区| 国产在线播放一区二区三区| 欧美自拍偷拍一区| 日韩专区在线视频| 午夜在线一区二区| 亚洲国产视频一区| 欧美专区一区二区三区| 亚洲第一二三四区| 久久久天天操| 日韩高清在线一区| 色偷偷88欧美精品久久久| 日本亚洲一区二区| 欧美三级日本三级少妇99| 久久机这里只有精品| 欧美日韩高清一区二区不卡| 狠狠色丁香久久婷婷综合丁香| 欧美久久一二区| 国产精品小仙女| 精品久久人人做人人爱| 91农村精品一区二区在线| 国产亚洲欧美日韩俺去了| 国产一区清纯| 中文字幕日本乱码精品影院| 精品91在线| 亚洲人成影院在线观看| 国产精品一区二区欧美| 午夜精品免费在线观看| 色av综合在线| 国产成人av电影免费在线观看| 日韩欧美一级精品久久| 91片黄在线观看| 亚洲欧美成aⅴ人在线观看| 国产私拍一区| 蜜桃免费网站一区二区三区| 91精品在线观看入口| 不卡av免费在线观看| 国产精品午夜春色av| 99在线精品视频在线观看| 亚洲国产wwwccc36天堂| 色成人在线视频| 成人影视亚洲图片在线| 国产精品欧美综合在线| 国产一区二区三区免费不卡| 免费一级片91| 日韩一级视频免费观看在线| 91免费视频大全| 亚洲精品免费视频| 欧洲人成人精品| 成人午夜免费av| 国产精品无遮挡| 亚洲欧美大片| 国产在线麻豆精品观看| 久久久久久久综合日本| 亚洲精品一区二区三区av| 日韩成人免费在线| 日韩一区二区免费在线电影| 国产精品v亚洲精品v日韩精品| 亚洲最大成人网4388xx| 欧美日韩免费一区二区三区| 91在线看国产| 亚洲午夜精品在线| 欧美视频精品在线观看| a级高清视频欧美日韩| 亚洲视频在线一区观看| 91福利国产精品| 成人国产精品免费| 亚洲视频免费看| 欧美午夜精品一区| 91影院在线观看| 亚洲大型综合色站| 日韩精品一区二区三区在线| 91久久国产自产拍夜夜嗨| 一区二区三区欧美在线| 日韩国产成人精品| 欧美大胆人体bbbb| 一区二区三区免费看| 国产麻豆9l精品三级站| 亚洲欧洲在线观看av| 色狠狠色噜噜噜综合网| 99re免费视频精品全部| 亚洲美女区一区| 91麻豆精品久久久久蜜臀| 韩国久久久久| 久久99精品国产91久久来源| 国产精品欧美经典| 色老汉av一区二区三区| 99热这里都是精品| 亚洲成人av一区二区三区| 日韩免费看的电影| 99成人在线| 国产.欧美.日韩| 亚洲一二三专区| 26uuu成人网一区二区三区| 国产精品美女久久久浪潮软件| 国产不卡视频一区| 一区二区三区不卡视频 | 国产精品久久久久久久久搜平片| 欧美性猛交xxxxxx富婆| 国产精品v亚洲精品v日韩精品| 极品美女销魂一区二区三区| 中文字幕一区不卡| 欧美一区二区三区日韩| 中国女人久久久| 不卡视频一二三| 青青草成人在线观看| 国产精品久久久久久一区二区三区| 欧美精品丝袜中出| 免费在线欧美黄色| 欧美精品国产| 国产乱人伦精品一区二区在线观看| 亚洲美女免费在线| 久久只精品国产| 欧美视频一二三区| 亚洲深夜激情| 午夜欧美视频| 国产精品99久久久久| 午夜一区二区三区在线观看| 国产亚洲美州欧州综合国| 欧美日韩免费观看一区三区| 亚洲精品裸体| 91美女精品福利| 国产乱国产乱300精品| 性久久久久久久| 亚洲青青青在线视频| 2020国产精品自拍| 91麻豆精品91久久久久同性| 老司机精品导航| 国产日产高清欧美一区二区三区| 91麻豆高清视频| 国产乱子轮精品视频| 天天亚洲美女在线视频| 亚洲乱码中文字幕综合| 久久精品日产第一区二区三区高清版 | 奇米色777欧美一区二区| 最新久久zyz资源站| 久久综合狠狠综合久久激情| 欧美成人精品1314www| 欧美天堂亚洲电影院在线播放| 亚洲欧美清纯在线制服| 亚洲天堂成人| 欧美高清一区| 99久久久精品| 成人三级伦理片| 国产电影精品久久禁18| 另类小说综合欧美亚洲| 石原莉奈在线亚洲三区| 亚洲另类中文字| 亚洲欧美成aⅴ人在线观看| 国产精品久久久久天堂| 久久久久亚洲蜜桃| 7777精品伊人久久久大香线蕉完整版| 91福利资源站| 一本色道**综合亚洲精品蜜桃冫| 亚洲一区二区三区精品视频| 99国内精品| 亚洲伦伦在线| 亚洲另类视频| 国产精品嫩草99av在线| 最新亚洲激情| 亚洲伦伦在线| 一区二区精品国产| 一本色道久久综合亚洲二区三区| 激情久久久久| 99视频精品| 在线视频精品一区| 国产精品入口| 国产精品毛片在线| 亚洲欧美日韩一区在线观看| 国产欧美日韩一区二区三区在线 | 91色九色蝌蚪| 欧美国产91| 激情综合视频| 亚洲精品乱码久久久久久蜜桃91| 在线观看不卡| 亚洲少妇在线| 美女尤物久久精品| 色94色欧美sute亚洲线路二| 欧美午夜一区二区三区免费大片| 欧美日韩精品系列| 欧美日韩一区 二区 三区 久久精品| 欧美日韩国产三级| 91精品国产综合久久香蕉的特点 | 蜜桃91丨九色丨蝌蚪91桃色| 久久99精品久久久久婷婷| 国产呦精品一区二区三区网站| 国产真实乱子伦精品视频| 国产一区二区三区在线观看精品 |