構建映象 每天5分鐘玩轉容器技術(12)

2021-09-07 11:05:09 字數 1356 閱讀 7011

對於 docker 使用者來說,最好的情況是不需要自己建立映象。幾乎所有常用的資料庫、中介軟體、應用軟體等都有現成的 docker 官方映象或其他人和組織建立的映象,我們只需要稍作配置就可以直接使用。

使用現成映象的好處除了省去自己做映象的工作量外,更重要的是可以利用前人的經驗。特別是使用那些官方映象,因為 docker 的工程師知道如何更好的在容器中執行軟體。

當然,某些情況下我們也不得不自己構建映象,比如:

找不到現成的映象,比如自己開發的應用程式。

需要在映象中加入特定的功能,比如官方映象幾乎都不提供 ssh。

所以本節我們將介紹構建映象的方法。同時分析構建的過程也能夠加深我們對前面映象分層結構的理解。

docker 提供了兩種構建映象的方法:

docker commit 命令

dockerfile 構建檔案

docker commit

docker commit 命令是建立新映象最直觀的方法,其過程包含三個步驟:

執行容器

修改容器

將容器儲存為新的映象

舉個例子:在 ubuntu base 映象中安裝 vi 並儲存為新映象。

第一步, 執行容器 

-it引數的作用是以互動模式進入容器,並開啟終端。412b30588f4a是容器的內部 id。

安裝 vi

確認 vi 沒有安裝。

儲存為新映象

在新視窗中檢視當前執行的容器。

silly_goldberg是 docker 為我們的容器隨機分配的名字。

執行 docker commit 命令將容器儲存為映象。

新映象命名為ubuntu-with-vi

檢視新映象的屬性。

從新映象啟動容器,驗證 vi 已經可以使用。

以上演示了如何用 docker commit 建立新映象。然而,docker並不建議使用者通過這種方式構建映象。原因如下:

這是一種手工建立映象的方式,容易出錯,效率低且可重複性弱。比如要在 debian base 映象中也加入 vi,還得重複前面的所有步驟。

更重要的:使用者並不知道映象是如何建立出來的,裡面是否有惡意程式。也就是說無法對映象進行審計,存在安全隱患。

既然 docker commit 不是推薦的方法,我們幹嘛還要花時間學習呢?

原因是:即便是用 dockerfile(推薦方法)構建映象,底層也 docker commit 一層一層構建新映象的。學習 docker commit 能夠幫助我們更加深入地理解構建過程和映象的分層結構。

下一節我們學習如何通過 dockerfile 構建映象。

構建映象 每天5分鐘玩轉容器技術(12)

對於 docker 使用者來說,最好的情況是不需要自己建立映象。幾乎所有常用的資料庫 中介軟體 應用軟體等都有現成的 docker 官方映象或其他人和組織建立的映象,我們只需要稍作配置就可以直接使用。使用現成映象的好處除了省去自己做映象的工作量外,更重要的是可以利用前人的經驗。特別是使用那些官方映象...

base 映象 每天5分鐘玩轉容器技術(10)

上一節我們介紹了最小的 docker 映象,本節討論 base 映象。base 映象有兩層含義 不依賴其他映象,從 scratch 構建。其他映象可以之為基礎進行擴充套件。所以,能稱作 base 映象的通常都是各種 linux 發行版的 docker 映象,比如 ubuntu,debian,cent...

base 映象 每天5分鐘玩轉容器技術(10)

原創 cloudman cloudman 2017 05 03 base 映象 上一節我們介紹了最小的 docker 映象,本節討論 base 映象。base 映象有兩層含義 不依賴其他映象,從 scratch 構建。其他映象可以之為基礎進行擴充套件。所以,能稱作 base 映象的通常都是各種 li...