Docker映象與容器區別與介紹

2021-12-30 07:16:51 字數 1358 閱讀 1962

要理解docker映象和docker容器之間的區別,確實不容易。

假設linux核心是第0層,那麼無論怎麼執行docker,他都是執行於核心層之上的。這個docker映象,是乙個唯讀的映象,位於第一層,他不能被修改或不能儲存狀態。

乙個docker映象可以構建於另乙個docker映象之上,這種層疊關係可以使多層的。第一層的映象我們稱之為基礎映象(base image),其他層的映象(除了最頂層)我們稱之為父層映象(parent image)。這些映象竟成了他們的父層映象的所有屬性和設定,並在dockerfile中新增了自己的配置。

docker映象通過映象id進行識別。映象id是乙個64字元的十六進製制的字串。但是當我們執行映象時,通常我們不會使用映象id來引用映象,而是使用映象名來引用。要列出本地所有有效的映象,可以使用命令

$>docker images映象可以發布為不同的版本,這種機制我們稱之為標籤(tag)?

如上圖所示,neo4j映象有兩個版本:lastest版本和2.1.5版本?

可以使用pull命令加上指定的標籤:

# docker pull ubuntu:14.04

# docker pull ubuntu:12.04

docker容器可以使用命令建立:

docker run imagesname他會在所有的映象層上增加乙個可寫層。這個可寫層有執行在cpu上的程序,而且有兩個不同的狀態:執行態(running)和退出態(exited)。這就是docker容器。當我們使用docker run啟動容器,docker容器就進入執行態,當我們停止docker容器時,他就進入了退出態。

當我們有乙個正在執行的docker容器時,從執行態到停止態,我們對他所做的一切變更都會永久的寫到容器的檔案系統中。要切記,對容器的變更是寫入到容器的檔案系統中,而不是寫入到docker映象中。

我們可以用同乙個映象啟動多個docker容器,這些容器啟動後都是活動的,彼此還是相互隔離的。我們對其中乙個容器所做的變更只會侷限於那個容器本身。

如果對容器的底層映象進行修改,那麼當前正在執行的容器是不受影響的,不會發生自動更新現象。

如果想更新容器到其映象的新版本,那麼必須當心,確保我們是以正確的方式構建了資料結構,否則我們可能會導致損失容器中所有資料的後果。

64字元的十六進製制的字串來定義容器id,它是容器的唯一識別符號。容器之間的互動是依靠容器id識別的,由於容器id的字元太長,我們通常只需鍵入容器id的前4個字元即可。當然,我們還可以使用容器名,但顯然用4字元的容器id更為簡便。

docker映象與docker容器

映象與容器的關係 映象 例如系統安裝映象 已經裝好環境的虛擬機器 執行一次 就是乙個容器 新的作業系統 當作是容器的 源 如同物件導向中的類 容器 裝好的系統 乙個乙個的作業系統,或者是已經裝好東西的系統 如同物件導向的物件 docker search 包名 搜尋包 一般都是去hub.docker....

Docker 容器與映象

映象 image 即是一堆唯讀層視角檔案,上一層檔案指標指向至下一層,直到最底層檔案。參照如圖,左邊為詳細的檔案系統,右邊為該檔案系統的入口視角 docker映象利用 union fs 聯合檔案系統 的技術,將其設計為分層儲存的架構。上一層映象都是依賴於下一層映象上基礎上再增加的資源 配置等。簡單理...

docker映象與容器操作

容器操作 docker例項 建立互動式容器 docker例項 建立守護式容器 掌握了映象操作與容器操作,docker基本就沒什麼東西了。映象操作沒幾個命令,主要是容器操作。斷劍重鑄之日,其勢歸來之時。docker pull redis刪除單個映象 docker rmi 刪除所有映象 docker r...