docker學習-構建鏡像

對於docker用戶來說,最好的情況是不需要自己創建鏡像,幾乎所有的常用的數據庫、中間件、應用軟件等都有現成的docker官方鏡像或其他人和組織創建的鏡像,我們只需要稍微配置就可以直接使用。
但是在某些情況下,也需要自己構建鏡像。
比如:
1、找不到現成的鏡像,比如自己開發應用程序
2、需要在鏡像中加入特定的功能。
docker提供了兩種構建鏡像的方法:docker commit命令和Dockerfile構建文件。

docker commit

docker commit命令式創建鏡像最直觀的方法,其過程包含3個步驟
1、運行容器
2、修改容器
3、將容器保存爲新的鏡像
比如: 在Ubuntu base鏡像中安裝vi並保存爲新鏡像
(1)運行容器
docker學習-構建鏡像
-it 參數的作用式以交互的模式進入容器,並打開終端。
2b1763cc8299就是容器內部的ID
(2)安裝vim
確認vim沒有安裝
docker學習-構建鏡像
安裝vim,如下所示:
docker學習-構建鏡像
(3)保存爲新鏡像
在新窗口中查看當前運行的容器
docker學習-構建鏡像
distracter_chaum是Docker爲我們的容器隨機分配的名字
執行docker commit命令將容器保存爲鏡像
docker學習-構建鏡像
新鏡像命名爲ubuntu-with-vim
查看新鏡像的屬性,如下所示:
docker學習-構建鏡像
可以看到新鏡像因爲安裝了vim軟件而變大了
從新鏡像啓動容器,驗證vim已經可以使用
docker學習-構建鏡像

雖然我們可以使用docker commit創建新鏡像,但是docker不建議用戶使用這種方式構建鏡像。原因如下:
1、該方式是手工創建鏡像的方式了,容易出錯,效率低可重複性弱
2、無法對鏡像進行審計,存在安全隱患

Dockerfile

Dockerfile是一個文本文件,記錄了鏡像構建的所有步驟

第一個Dockerfile

新建一個文本文件Dockerfile,內容如下:
docker學習-構建鏡像
以下爲運行docker build命令構建鏡像並詳細分析細節

[root@docker-1 ~]# docker build -t ubuntu-with-vim-dockerfile .    (1)
Sending build context to Docker daemon  13.31kB                        (2)
Step 1/2 : FROM ubuntu                                                                  (3)
 ---> a2a15febcdf3
Step 2/2 : RUN apt-get update && apt-get install -y vim                   (4)
 ---> Running in ad7fa94cfb94                                                           (5)
Successfully built ad7fa94cfb94                                                         (6)
Successfully tagged ubuntu-with-vim-dockerfile:latest                              (7)

說明:
1、運行docker build命令,-t將新鏡像命名爲ubuntu-with-vim-dockerfile 命令末尾的.指明build context爲當前目錄。Docker默認會從build context中查找Dockerfile文件,
也可以通過-f參數指定Dockerfile文件的位置
2、鏡像構造過程。首先Docker將build context中的文件發送給Docker daemon,bulid context爲鏡像構建提供所需要的文件或目標。Dockerfile中的ADD,COPY命令可以將build context中的文件添加到鏡像,此例中,bulid context爲當前目錄.root,該目錄下的所有文件和子目錄都會被髮送給Docker daemon。注意不要將多餘文件放到bulid context,特別不要把/,/usr作爲bulid context,否則構建過程中會相當的緩慢甚至失敗
3、Step1,執行FROM,將Ubuntu作爲base鏡像,鏡像ID爲a2a15febcdf3
4、Step2,執行RUN,安裝vim
5、啓動臨時容器,在容器中通過apt-get安裝vim
6、安裝完成後,將容器保存爲鏡像,其ID爲ad7fa94cfb94
該步驟底層使用類似docker commit的命令
7、鏡像構建成功

通過docker images查看鏡像信息

docker學習-構建鏡像

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章