Docker框架使用系列教程(七)Dockerfile映象建立

千鋒武漢發表於2021-04-27

      docker框架系列教程已經到第七期了,今天我們介紹一下Dockerfile映象的建立,重點都在內部進行了標註,喜歡記得分享收藏。

      Dockerfile建立映象

      Dockerfile由一行行命令語句組成,並且支援用“#”開頭作為註釋,一般的,Dockerfile分為四部分:基礎映象資訊,維護者資訊,映象操作指令和容器啟動時執行的指令。

      Dockerfile指令:

      1、FROM、格式:FROM <image>或 FROM <image>:<tag>

      第一條指令必須為FROM指令,並且,如果在同一個Dockerfile中建立多個映象時,可以使用多個FROM指令(每個映象一次)

      2、MAINTAINET、格式:MAINTAINET <name>

      指定維護者的資訊

      3、RUN、格式:RUN <command> 或 RUN ["", "", ""]

      每條指令將在當前映象基礎上執行,並提交為新的映象。(可以用“\”換行)

      4、CMD、格式:CMD ["","",""]

      指定啟動容器時執行的命令,每個Dockerfile只能有一條CMD指令,如果指定了多條指令,則最後一條執行。(會被啟動時指定的命令覆蓋)

      5、EXPOSE、格式:EXPOSE <port> [ <port> ...]

      告訴Docker服務端暴露埠,在容器啟動時需要透過 -p 做埠對映

      6、ENV、格式:ENV <key> <value>

      指定環境變數,會被RUN指令使用,並在容器執行時儲存

      7、ADD、格式:ADD <src> <dest>

      複製指定的<src>到容器的<dest>中,<src>可以是Dockerfile所在的目錄的一個相對路徑;可以是URL,也可以是tar.gz(自動解壓)

      8、COPY、格式:COPY <src> <dest>

      複製本地主機的 <src> ( 為 Dockerfile 所在目錄的相對路徑)到容器中的 <dest> (當使用本地目錄為源目錄時,推薦使用 COPY)

      9、ENTRYPOINT、格式:ENTRYPOINT ["","",""]

      配置容器啟動後執行的命令,並且不可被 docker run 提供的引數覆蓋。(每個 Dockerfile 中只能有一個 ENTRYPOINT ,當指定多個時,只有最後一個起效)

      10、VOLUME、格式:VOLUME ["/mnt"]

      建立一個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的資料等

      11、USER、格式:USER daemon

      指定執行容器時的使用者名稱或 UID,後續的 RUN 也會使用指定使用者。

      12、WORKDIR、格式:WORKDIR /path/to/workdir

      為後續的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目錄。(可以使用多個 WORKDIR 指令,後續命令如果引數是相對路徑, 則會基於之前命令指定的路徑)

      13、ONBUILD、格式:ONBUILD [INSTRUCTION]

      配置當所建立的映象作為其它新建立映象的基礎映象時,所執行的操作指令

      使用Dockerfile是更推薦的方式,這樣可以讓使用者更清晰地看到這個映象的製作細節.

      dockerfile的使用:

1

      1.建立對應的目錄

      mkdir ubuntu-vim

      2.進入ubuntu-vim目錄,touch Dockerfile ,使用vi編輯器編寫Dockerfile檔案

2

      3.docker build

      docker build -t="running/ubuntu-vim:v1" .

      務必注意最後的 ‘.’

      過程解析

      docker映象是隻讀的,這裡為什麼能夠在ubuntu映象的基礎上進行自定義操作呢?

      我們看一下docker的編譯過程

3

      編譯的第一步會複用之前已經存在的ubuntu:16.04

      重點是第二步,455246ab1968其實是在ubuntu:16.04映象的基礎上生成的一個臨時container的id,我們忽略vim的安裝過程,跳到最後

4

      只要看到removing intermediate container xxxx,表示刪除了臨時的容器,即最後根據臨時生成的container來docker commit生成映象檔案,最後刪除臨時container。

      安裝完成可以看到:

5

       以上就是關於Dockerfile映象建立的相關知識。想了解更多Python相關知識,歡迎在評論中留言分享。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2770038/,如需轉載,請註明出處,否則將追究法律責任。

相關文章