国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

Docker 特性與原理詳細介紹與解析

2019-11-02 16:14:48
字體:
來源:轉載
供稿:網友

Docker 特性與原理

首先看看Docker提供了哪些特性:

交互式Shell:Docker可以分配一個虛擬終端并關聯到任何容器的標準輸入上,例如運行一個一次性交互shell 文件系統(tǒng)隔離:每個進程容器運行在完全獨立的根文件系統(tǒng)里 寫時復制:采用寫時復制方式創(chuàng)建根文件系統(tǒng),這讓部署變得極其快捷,并且節(jié)省內存和硬盤空間 資源隔離:可以使用cgroup為每個進程容器分配不同的系統(tǒng)資源 網絡隔離:每個進程容器運行在自己的網絡命名空間里,擁有自己的虛擬接口和IP地址 日志記錄:Docker將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索 變更管理:容器文件系統(tǒng)的變更可以提交到新的映像中,并可重復使用以創(chuàng)建更多的容器。無需使用模板或手動配置

從以上特性分別看實現原理

1. 交互式Shell

首先我們允許一個交互式的容器

$docker run -i -t <image name> /bin/bash

這樣就建立了一個到容器內的交互式連接,看到的是如下的命令行:

root@df3880b17407:/#

這里我們啟動了一個容器,以bash作為其根進程.

root@df3880b17407:/# ps aux USER    PID %CPU %MEM  VSZ  RSS TTY   STAT START  TIME COMMANDroot     1 0.0 0.0 18164 2020 ?    S  06:06  0:00 /bin/bash

可以看到,在這個容器中,bash 的 PID為 1,而實體機平常情況下,是這樣的:

root@ubuntu:~# ps aux USER    PID %CPU %MEM  VSZ  RSS TTY   STAT START  TIME COMMANDroot     1 0.0 0.1 24716 2612 ?    Ss  Sep04  0:01 /sbin/init

大家都知道,所有進程的共同祖先都是 PID=1的進程

所以在容器中,所有以后創(chuàng)建的進程都是通過/bin/bash 創(chuàng)建的,PID=1的 bash是容器中所有進程的祖先理解了這點后,對容器的理解就很簡單了.

2. 文件系統(tǒng)隔離

對于一個正在運行的容器,其文件系統(tǒng)都是一個從根目錄開始的虛擬文件系統(tǒng),在容器中看到的是這樣的:

root@df3880b17407:/# ll /total 68drwxr-xr-x  2 root root 4096 Jul 22 22:51 bindrwxr-xr-x  2 root root 4096 Apr 10 22:12 bootdrwxr-xr-x  3 root root 4096 Jul 22 22:49 devdrwxr-xr-x 85 root root 4096 Sep 5 06:49 etcdrwxr-xr-x  2 root root 4096 Apr 10 22:12 homedrwxr-xr-x 16 root root 4096 Jul 22 22:50 libdrwxr-xr-x  2 root root 4096 Aug 12 03:30 lib64drwxr-xr-x  2 root root 4096 Jul 22 22:48 mediadrwxr-xr-x  2 root root 4096 Apr 10 22:12 mntdrwxr-xr-x  2 root root 4096 Jul 22 22:48 optdr-xr-xr-x 356 root root  0 Sep 5 06:06 procdrwx------  2 root root 4096 Jul 22 22:51 rootdrwxr-xr-x  7 root root 4096 Sep 5 07:23 rundrwxr-xr-x  2 root root 4096 Aug 12 03:30 sbindrwxr-xr-x  2 root root 4096 Jul 22 22:48 srvdr-xr-xr-x 13 root root  0 Sep 5 06:06 sysdrwxrwxrwt  2 root root 4096 Sep 5 06:55 tmpdrwxr-xr-x 20 root root 4096 Sep 5 06:11 usrdrwxr-xr-x 19 root root 4096 Sep 5 06:11 var

其實真是情況是這樣的,容器中的文件系統(tǒng)都是掛載到了真是系統(tǒng)中的一個目錄下面.

/var/lib/docker/containers/<image-long-id>/rootfs

這個配置是怎么來的呢,其實所有容器的管理都是通過lxc來管理的,lxc的配置文件放在

/var/lib/docker/containers/<image-long-id>/config.lxc

文件中有字段表示容器掛載到哪個文件目錄, 比如我的是這樣的:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 延边| 湘阴县| 山东省| 雅安市| 普兰店市| 徐水县| 繁昌县| 博客| 许昌县| 乌鲁木齐县| 启东市| 老河口市| 化隆| 志丹县| 罗平县| 呼玛县| 吕梁市| 扶风县| 长寿区| 新平| 白玉县| 山东省| 龙山县| 馆陶县| 江都市| 灵璧县| 通山县| 绿春县| 万荣县| 北安市| 长乐市| 育儿| 临洮县| 子洲县| 大田县| 富顺县| 天峨县| 通榆县| 衡南县| 天全县| 安多县|