docker系列七 docker容器的工作方式

一個(gè)容器由操作系統(tǒng),用戶文件和元數(shù)據(jù)組成。由此可知,每個(gè)容器都根據(jù)鏡像來(lái)生成。這個(gè)鏡像告訴Docker容器包含什么內(nèi)容,運(yùn)行什么程序,以及其他配置信息。

docker image是只讀的,當(dāng)一個(gè)容器運(yùn)行一個(gè)鏡像時(shí),容器會(huì)在Union FS的頂層增加文件層。

運(yùn)行下面一條執(zhí)行,執(zhí)行后會(huì)出現(xiàn)下面的信息:

[root@VM_0_5_centos ~]# docker run -i -t ubuntu /bin/bash
Unable to find image 'ubuntu:latest' locally
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
7ddbc47eeb70: Pull complete
c1bbdc448b72: Pull complete
8c3b70e39044: Pull complete
45d437916d57: Pull complete
Digest: sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
Status: Downloaded newer image for docker.io/ubuntu:latest
root@b2ca7b248b17:/#

docker client 通過(guò)run 命令告訴Daemon啟動(dòng)一個(gè)新的容器,這個(gè)指令至少需要包括:

(1)、需要運(yùn)行什么image,這里使用的是ubuntu基礎(chǔ)鏡像
(2)、需要在容器啟動(dòng)是運(yùn)行什么命令,這里使用的是/bin/bash。是否需要進(jìn)入應(yīng)用程序,這里指定 -i -t,表示進(jìn)入容器交互模式

那么具體到內(nèi)部的流程是怎么樣的呢?

(1)、拉取ubuntu鏡像:docker檢查本地是否存在ubuntu鏡像,如果就自動(dòng)從docker hub拉取,如果存在就進(jìn)入下一步。
(2)、創(chuàng)建一個(gè)容器:一旦本地存在ubuntu鏡像,docker將通過(guò)它來(lái)創(chuàng)建容器。
(3)、分配文件系統(tǒng)并掛載一個(gè)RW層:容器是創(chuàng)建在文件系統(tǒng)中的,并且在其之上增加了一層讀寫層。由此可以看出容器并不會(huì)改變?cè)嫉溺R像。
(4)、分配網(wǎng)絡(luò)/橋接模式:創(chuàng)建一個(gè)橋接網(wǎng)絡(luò)接口,使容器可以和本地主機(jī)進(jìn)行通信。
(5)、設(shè)置一個(gè)IP地址:根據(jù)本地網(wǎng)絡(luò)情況,選取一個(gè)可用的IP掛載到容器之上。
(6)、啟動(dòng)一個(gè)進(jìn)程:這里就是/bin/bash
(7)、抓取應(yīng)用程序的輸出:將程序的stdin、stdout、和stderr進(jìn)行捕捉,這樣就可以看到程序的運(yùn)行情況。至此,就擁有了一個(gè)運(yùn)行的容器。通過(guò)容器,可以運(yùn)行程序,并且進(jìn)行交互。當(dāng)程序執(zhí)行完畢,可以停止和刪除程序。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 五、Docker 端口映射 無(wú)論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問(wèn)不到的。此外,除了...
    R_X閱讀 1,954評(píng)論 0 7
  • docker常用命令原理圖概覽: 按照docker官網(wǎng)上的說(shuō)法,docker的文件系統(tǒng)分為兩層:bootfs和ro...
    燕京博士閱讀 3,131評(píng)論 2 32
  • 一、Docker 簡(jiǎn)介 Docker 兩個(gè)主要部件:Docker: 開源的容器虛擬化平臺(tái)Docker Hub: 用...
    R_X閱讀 4,510評(píng)論 0 27
  • 這段時(shí)間深刻地體會(huì)到言多必失這句話的含義。清明與同事出玩,回來(lái)多講了一些話,被同事一句話噎得不行,如果自己有些...
    何夕蘇閱讀 925評(píng)論 0 0
  • 信息如疾風(fēng)驟雨,來(lái)的猛,來(lái)的多。 對(duì)信息的選擇、處理、傳播、控制、升級(jí)能力,決定著決策和行動(dòng)。 瞬間處理。來(lái)自于手...
    天線的觸角閱讀 401評(píng)論 1 0

友情鏈接更多精彩內(nèi)容