您好,登錄后才能下訂單哦!
今天小編給大家分享一下Docker鏡像和容器的區別有哪些的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
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)。
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鏡像和容器的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。