docker學習-構建鏡像

對於docker用戶來講,最好的狀況是不須要本身建立鏡像,幾乎全部的經常使用的數據庫、中間件、應用軟件等都有現成的docker官方鏡像或其餘人和組織建立的鏡像,咱們只須要稍微配置就能夠直接使用。
可是在某些狀況下,也須要本身構建鏡像。
好比:
一、找不到現成的鏡像,好比本身開發應用程序
二、須要在鏡像中加入特定的功能。
docker提供了兩種構建鏡像的方法:docker commit命令和Dockerfile構建文件。docker

docker commit

docker commit命令式建立鏡像最直觀的方法,其過程包含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不建議用戶使用這種方式構建鏡像。緣由以下:
一、該方式是手工建立鏡像的方式了,容易出錯,效率低可重複性弱
二、沒法對鏡像進行審計,存在安全隱患ubuntu

Dockerfile

Dockerfile是一個文本文件,記錄了鏡像構建的全部步驟vim

第一個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)

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

經過docker images查看鏡像信息學習

docker學習-構建鏡像

相關文章
相關標籤/搜索