1、鏡像的定義
鏡像是一種輕量級、可執行的獨立軟體包,用來打包軟體運行環境和基于運行環境開發的軟體,它包含運行某個軟體所需的所有內容,其中包括代碼、運行時、庫、環境變數和組態檔,通過將所有的應用和環境直接打包為docker鏡像,就可以直接運行,我們需要知道的是:Docker鏡像都是只讀的,在容器啟動的時候,一個新的可寫層被加載到鏡像到的頂部,這一層就被稱為容器層,處于容器層之下的稱之為鏡像層,當啟動容器的時候,會在鏡像的基礎上再添加一個當前容器的專用層,這層是讀寫的,在洗掉容器的時候,這個容器的專屬的這個讀寫層就會被洗掉,所以默認容器無法實作資料的持久存盤,
2、鏡像的獲取方式
- 從遠程倉庫下載,
- 通過拷貝獲取,
- 自己制作一個鏡像DockerFile,
3、鏡像加載的原理
在介紹Docker鏡像的原理之前,先來介紹一下UnionFS(聯合檔案系統),它是一種分層、輕量級且高性能的檔案系統,支持對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬檔案系統下,Union 檔案系統是 Docker 鏡像的基礎,鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像)可以制作各種具體的應用鏡像,對于UnionFS來說,它可以一次同時加載多個檔案系統,但是從外面來看只能看到一個檔案系統,通過層層疊加,聯合檔案系統會把各層檔案系統疊加起來,這樣最終形成的檔案系統就會包含所有底層到的檔案和目錄,這種方式就像千層餅一樣,
Docker的鏡像實際上由一層一層的檔案系統組成,如下圖:

觀察上圖:
- bootfs主要包含bootloader和kernel,它的型別可以是btrfs、aufs、lxc,bootloader主要是引導加載kernel,Linux剛啟動時會加載bootfs檔案系統,在Docker鏡像的最底層是bootfs,這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核,當boot加載完成之后整個內核就都在記憶體中了,此時記憶體的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs,
- rootfs是一個根檔案系統,這里面包括很多的檔案和目錄,位于在bootfs之上,主要包含的就是典型 Linux 系統中的 /dev, /proc, /bin, /etc 等標準目錄和檔案,rootfs指的是各種不同的作業系統發行版,比如Ubuntu,Centos等等,
需要注意的是:在啟動容器的時候,這兩層都是以只讀的方式來掛載的,
通過前面的介紹可以知道:鏡像的設計采用了層級管理的方式,其底層的是bootfs,最上面的是rootfs,這種方式最大的好處就是共享資源,并且很大程度提高了Docker鏡像的分發與存盤,因為當多個鏡像都是從相同的base鏡像構建出來的,那么對于宿主機而言,只需要在磁盤上保存一份base鏡像即可,同時在記憶體中也只需要加載一份base鏡像,從而為所有的容器服務,如下圖,這種方式更容易理解,

來看一下我們pull一個鏡像的程序:

從上面的下載程序就可以看到Docker鏡像的分層結構,因為下載的程序是逐步下載的,通過docker images可以看到下載之后的檔案是比較小的,這是因為對于一個精簡的OS來說,rootfs可以很小,里面只需要包括最基本的命令、工具和程式庫,而底層直接用Host的kernel,自己只需要提供 rootfs 即可,由此可見,對于不同的linux發行版, bootfs基本是一致的,,而rootfs會有差別,,因此不同的發行版可以共用bootfs,所以,我們拉取的鏡像,大小比以前都小,
4、鏡像的commit操作
(1)命令
格式:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
引數說明:
-
-a :提交的鏡像作者;
-
-c :使用Dockerfile指令來創建鏡像;
-
-m :提交時的說明文字;
-
-p :在commit時,將容器暫停,
示例:
docker commit -m=“提交的描述資訊” -a=“作者” 容器ID 要創建的目標鏡像名:[標簽名]
(2)實體
以tomcat為例:
a.從hub下載tomcat鏡像——docker pull tomcat

b.運行tomcat容器——docker run -d -p 8084:8080 tomcat

c.查看當前運行的容器——docker ps
d.以互動方式運行Tomcat——docker exec -it eff0e88737be /bin/bash

e.洗掉webapp——rm -rf webapps/docs
f.以當前的tomcat運行實體為模板commit一個沒有doc的tomcat新鏡像,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277445.html
標籤:其他
下一篇:淺談Samba服務
