首頁  >  文章  >  運維  >  docker中映像和容器的差別是什麼

docker中映像和容器的差別是什麼

WBOY
WBOY原創
2022-02-11 18:00:3017369瀏覽

docker中映像和容器的區別:1、鏡像是包含了各種環境或服務的一個模板,而容器是鏡像的一個實例;2、鏡像是不能運行的,是靜態的,而容器是可以運作的,是動態的。

docker中映像和容器的差別是什麼

本教學操作環境:linux7.3系統、docker-1.13.1版、Dell G3電腦。

docker中映像和容器的區別是什麼

一、Docker映像

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

假設Linux核心是第0層,那麼無論怎麼執行Docker,它都是運行於核心層之上的。這個Docker映像,是一個唯讀的映像,位於第1層,它不能被修改或不能保存狀態。

一個Docker映像可以建構在另一個Docker映像之上,這種層疊關係可以是多層的。第1層的鏡像層我們稱之為基礎鏡像(Base Image),其他層的鏡像(除了最頂層)我們稱之為父層鏡像(Parent Image)。這些映像繼承了他們的父層映像的所有屬性和設置,並在Dockerfile中添加了自己的配置。

Docker映像透過映像ID進行辨識。鏡像ID是一個64字元的十六進位的字串。但是當我們運行鏡像時,通常我們不會使用鏡像ID來引用鏡像,而是使用鏡像名稱來引用。要列出本地所有有效的鏡像,可以使用命令

# docker images

鏡像可以發佈為不同的版本,這種機制我們稱之為標籤(Tag)。

docker中映像和容器的差別是什麼

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

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

# docker pull ubuntu:14.04
# docker pull ubuntu:12.04

二、Docker容器

Docker容器可以使用指令建立:

# docker run imagename

它會在所有的鏡像層之上增加一個可寫入層。這個可寫層有運行在CPU上的進程,而且有兩個不同的狀態:運行態(Running)和退出態(Exited)。這就是Docker容器。當我們使用docker run啟動容器,Docker容器就進入運行態,當我們停止Docker容器時,它就會進入退出態。

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

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

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

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

64字元的十六進位的字串來定義容器ID,它是容器的唯一識別碼。容器之間的互動是依靠容器ID識別的,由於容器ID的字元太長,我們通常只需鍵入容器ID的前4個字元即可。當然,我們也可以使用容器名,但顯然用4字的容器ID比較簡單。

推薦學習:《docker影片教學

以上是docker中映像和容器的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn