對于不同的容器,掛載點是不一樣的,而容器不能穿越根目錄上一級去訪問, 所以這里對每一個容器都做到了文件系統隔離。

3. 寫時復制

我們把每一個

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

看做是一個容器的配置目錄的話,可以看到在配置目錄下面有一個 rw/目錄,打開看有些什么

total 36
drwxr-xr-x 9 root root 4096 Sep 5 00:23 ./
drwx------ 4 root root 4096 Sep 5 00:53 ../
drwxr-xr-x 6 root root 4096 Sep 4 23:49 etc/
drwxr-xr-x 2 root root 4096 Sep 5 00:23 run/
drwxrwxrwt 2 root root 4096 Sep 4 23:55 tmp/
drwxr-xr-x 7 root root 4096 Sep 4 23:11 usr/
drwxr-xr-x 5 root root 4096 Sep 4 23:11 var/
-r--r--r-- 1 root root 0 Sep 4 23:06 .wh..wh.aufs
drwx------ 2 root root 4096 Sep 4 23:06 .wh..wh.orph/
drwx------ 2 root root 4096 Sep 4 23:11 .wh..wh.plnk/

里面是一些不完整的根目錄,這不能說明什么,但是我們在container中寫入文件后,看看其中的變化

在容器中執行以下命令

root@df3880b17407:/# touch /opt/x

在 /opt 下我們生成了一個文件

再看看

root@ubuntu:/var/lib/docker/containers/df3880b17407575cd642a6b7da3c7e417a55fad5bbd63152f89921925626d2b6/rw# ll
total 40
drwxr-xr-x 10 root root 4096 Sep 5 01:00 ./
drwx------ 4 root root 4096 Sep 5 00:53 ../
drwxr-xr-x 6 root root 4096 Sep 4 23:49 etc/
drwxr-xr-x 2 root root 4096 Sep 5 01:00 opt/
drwxr-xr-x 2 root root 4096 Sep 5 00:23 run/
drwxrwxrwt 2 root root 4096 Sep 4 23:55 tmp/
drwxr-xr-x 7 root root 4096 Sep 4 23:11 usr/
drwxr-xr-x 5 root root 4096 Sep 4 23:11 var/
-r--r--r-- 1 root root 0 Sep 4 23:06 .wh..wh.aufs
drwx------ 2 root root 4096 Sep 4 23:06 .wh..wh.orph/
drwx------ 2 root root 4096 Sep 4 23:11 .wh..wh.plnk/

是的,在host機器上新生成了 opt/目錄,這里做到了容器的寫時復制

4. 資源隔離

以系統的三大進程間通信的消息隊列來看

初始狀態在 ghost, ipcs -q 查看消息隊列

在ghost 創建一個, 這里樓主自己寫的代碼創建的消息隊列:

root@ubuntu:~/codes/msq# ./main 1
Create msq with key id 65536root@ubuntu:~/codes/msq# ipcs -q

------ Message Queues --------
key msqid owner perms used-bytes messages
0x00000001 65536 root 666 0 0

然后在容器中查看 ipcs -q

root@df3880b17407:/# ipcs -q

------ Message Queues --------
key msqid owner perms used-bytes messages
<br>

可以看到系統資源是隔離的,這里只是說了一部分,其實還包括了可以通過cgoup對其做CPU和Memory的Quota管理.
默認情況下是使用了所有CPU和內存的,但是可以在config.lxc增加如下配置設置CPU等,具體可以參考lxc的文檔

lxc.cgroup.cpu.shares=512 lxc.cgroup.cpuset.cpus=1.2

資源隔離的原理就在于利用cgroup,將不同進程的使用隔離開,假設每個容器都是以bash啟動的,那么在容器內部,每個子進程都只能使用當前bash下面的資源,對于其他的系統資源是隔離的.子進程的訪問權限由父進程決定

5.網絡隔離

在安裝好docker后,會默認初始化一個 docker0的網橋

docker0 Link encap:Ethernet HWaddr ee:8c:1f:8b:d7:59
inet addr:172.17.42.1 Bcast:0.0.0.0 Mask:255.255.0.0
...

在host機器上,會為每一個容器生成一個默認的網卡類似這樣的 vethdBVa1H veth*

這個網卡的一端連接在容器的eth0,一端連接到docker0.這樣就實現了每個容器有一個單獨的IP.

這里如果需要容器訪問外網,需要將eth0設置為混雜模式:

$ifconfig eth0 promisc

這樣看來,容器會從172.17.0.0/24 這個網段選擇一個IP作為eth0的IP,這樣,容器就可以和外部通過 docker0網橋通信了.

在容器內部監聽一個端口 python -m SimpleHTTPServer 80 >> /tmp/log.log &

從ghost訪問 telnet 172.17.0.2 80

在容器中看到如下:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2823/python
tcp 0 0 172.17.0.2:80 172.17.42.1:46142 TIME_WAIT -

在host上看到

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 172.17.42.1:46142 172.17.0.2:80 ESTABLISHED 10244/telnet

如果需要外部能夠訪問容器,需要做端口映射規則,和配置虛擬機一樣的道理, 只不過這里可以看到的是,80端口并沒有占用了本地端口,而是在容器內部做了監聽,外部是通過docker0 橋接過去的,每個容器間也做到了端口和網絡隔離.

6.日志記錄

不多說,在 /var/lib/docker/containers/<image-long-id>.log 下

7.變更管理

Docker的變更管理看做是git的版本管理好了。

生成鏡像的時候,未做改動的部分就是上一個版本的鏡像的引用,如果做了改動,就是一個新的文件。

將剛才操作的容器做成鏡像

docker commit <image-id> <REPOSITORY>

此時的鏡像多出來的部分,比如我在這個鏡像中安裝了Python,那么多出來的部分作為新文件,其他部分任然是上一個版本的引用。

你可以搭建自己的鏡像服務器,push到自己的鏡像服務器,從其他機器拉下來后直接可以運行。

贊(0)
聲明:本網站發布的內容(圖片、視頻和文字)以原創、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。郵箱:3140448839@qq.com。本站原創內容未經允許不得轉載,或轉載時需注明出處:三五互聯知識庫 » Docker特性與原理詳細介紹與解析

登錄

找回密碼

注冊

主站蜘蛛池模板: JIZZJIZZ国产| 国产一区二区高清不卡| 92国产精品午夜福利免费| 国产果冻豆传媒麻婆| 四虎在线播放亚洲成人| 国产三级精品片| 最新国产AV最新国产在钱| 国产99久一区二区三区a片| 国产精品美女www爽爽爽视频 | 人人玩人人添人人澡超碰| 国产做无码视频在线观看| 国产无套内射普通话对白| 精品午夜福利在线视在亚洲| 丰满熟妇乱又伦在线无码视频| 国产精品麻豆中文字幕| 国产免费播放一区二区三区| 国产99视频精品免费视频36| 1区2区3区4区产品不卡码网站| 四虎国产精品免费久久| 国内精品伊人久久久久影院对白 | 亚洲一区在线成人av| 亚洲AV日韩AV激情亚洲| 四虎成人精品永久网站| 国产免费无遮挡吃奶视频| 九色综合国产一区二区三区| 91精品国产午夜福利| 亚洲日本欧美日韩中文字幕 | 国产午夜福利不卡在线观看| 亚洲中文字字幕精品乱码| 岛国一区二区三区高清视频| 午夜福利偷拍国语对白| 成人伊人青草久久综合网| 亚洲高清乱码午夜电影网| 又粗又硬又黄a级毛片| 九九色这里只有精品国产| 九色综合国产一区二区三区| 国产乱码精品一区二区三| 国产欧洲欧洲久美女久久| 中文字幕在线精品视频入口一区| 亚洲 制服 丝袜 无码| 色综合久久中文字幕综合网|