Docker學習之路(五)映象的基本操作

2021-09-20 06:35:21 字數 2239 閱讀 1027

docker映象時由檔案系統疊加而成,最底端是乙個引導檔案系統,即bootfs,這很像典型的linux/unix的引導檔案系統。docker使用者幾乎永遠不會和引導檔案系統有互動。實際上,當乙個容器啟動後,他將會被移到記憶體中,而引導檔案系統則會被解除安裝(unmount),以流出更多的記憶體供initrd磁碟映象使用。

目前,docker看起來還很像乙個典型的linux虛擬化棧。實際上,docker映象的第二層是root檔案系統rootfs,它位於引導檔案系統之上,rootfs可以是一種或多種作業系統(如debian、ubuntu)。

在傳統的linux引導過程中,root檔案系統會最先以唯讀的方式家長,當引導結束並完成完整性檢查之後,他才會被切換成讀寫模式。但是docker裡,root檔案系統永遠只是唯讀狀態,並且docker利用聯合載入(union mount)技術又會在root檔案系統層上載入更多的唯讀檔案系統。聯合載入指的是一次同時載入多個檔案系統,但是在外面看起來只能看到乙個檔案系統。聯合載入會將各層檔案系統疊加到一起,這樣最終的檔案系統會包含所有底層的檔案和目錄。

docker將這樣的檔案系統成為映象。乙個映象可以放到另乙個京廣線的頂部,位於下面的映象稱為父映象(parent image),最底部的稱為基礎映象(base image)。

簡單來說,docker 映象就是乙個唯讀的模板。例如:乙個映象可以包含乙個完整的 ubuntu 作業系統環境,裡面僅安裝了 apache 或使用者需要的其它應用程式。

映象是docker生命週期中的「構建」部分,可以用來建立 docker 容器。

映象是基於聯合(union)檔案系統的一種層式的結構,由一系列指令一步步構建處理。例如:

當從以映象期待容器時,docker會在該映象的最頂層載入乙個讀寫檔案系統。想在docker中執行的程式就是在這個讀寫層中執行的。

docker images命令:

在列出資訊中,可以看到幾個字段資訊:

其中映象的id唯一標識了映象,注意到ubuntu:14.04ubuntu:trusty具有相同的映象id,說明它們實際上是同一映象。

tag資訊用來標記來自同乙個倉庫的不同映象。例如ubuntu倉庫中有多個映象,通過tag資訊來區分發行版本,例如12.0412.1013.0414.04等。

下面的命令指定使用映象ubuntu:14.04來啟動乙個容器。

$ sudo docker run -t -i ubuntu:14.04 /bin/bash
如果不指定具體的標記,則預設使用latest標記資訊。

本地映象都儲存在docker宿主機的/var/lib/docker目錄下。每個映象都儲存在docker所採用的儲存驅動目錄下。也可以在/var/lib/docker/containers目錄下面看到所有的容器。

也可以通過pull命令預先拉取映象到本地,可以節省從乙個新映象啟動乙個容器的世界。

拉取乙個fedora基礎映象的例子:

$ sudo docker pull fedora
docker search命令查詢所有docker hub上公共的可用映象:

返回了以下資訊:

【本人的學習筆記,主要是對《我的第一本docker書》、《docker —— 從入門到實踐》的學習記錄,引用了很多書上的話和例子,並結合其他各種資源的學習。我使用的是windows 7, docker 1.3.2。】

Docker學習 Docker映象

一 列出映象 命令 docker images optsions repositort a 標識列出所有 f 寫過濾條件 no trunc 不截斷id q 只顯示唯一id repository是倉庫名字 registry代表的是大庫 tag標籤名字 對應版本,id唯一標識 庫名字 標籤 對應乙個id...

docker學習之路 映象和容器的操作命令

映象 拉取映象 docker pull 選項 docker registry 位址 埠號 倉庫名 標籤 列出映象 docker image ls 刪除本地映象 ocker image rm 選項 映象1 映象2 映象 可以是 映象短 id 映象長 id 映象名 或者 映象摘要 容器 新建並啟動容器 ...

docker 學習 映象

1 獲取映象 docker pull dl.dockerpool.com 5000 ubuntu latest 2 檢視映象資訊 docker images 倉庫 標籤 id 建立時間 大小 docker inspect 映象id 映象的詳細資訊 3 搜尋映象 docker serach mysql...