Docker框架使用系列教程(七)Dockerfile映象建立
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.建立對應的目錄
mkdir ubuntu-vim
2.進入ubuntu-vim目錄,touch Dockerfile ,使用vi編輯器編寫Dockerfile檔案
3.docker build
docker build -t="running/ubuntu-vim:v1" .
務必注意最後的 ‘.’
過程解析
docker映象是隻讀的,這裡為什麼能夠在ubuntu映象的基礎上進行自定義操作呢?
我們看一下docker的編譯過程
編譯的第一步會複用之前已經存在的ubuntu:16.04
重點是第二步,455246ab1968其實是在ubuntu:16.04映象的基礎上生成的一個臨時container的id,我們忽略vim的安裝過程,跳到最後
只要看到removing intermediate container xxxx,表示刪除了臨時的容器,即最後根據臨時生成的container來docker commit生成映象檔案,最後刪除臨時container。
安裝完成可以看到:
以上就是關於Dockerfile映象建立的相關知識。想了解更多Python相關知識,歡迎在評論中留言分享。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2770038/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker框架使用系列教程(六)建立映象Docker框架
- 【系列6】使用Dockerfile建立帶LAMP的CentosDocker映象DockerLAMPCentOS
- 使用Dockerfile建立帶Apache服務的Centos Docker映象DockerApacheCentOS
- Dockerfile建立映象Docker
- Docker - 02 建立映象 Dockerfile 指令速查表Docker
- 如何編寫 Dockerfile 檔案建立 Docker 映象Docker
- Docker 入門系列四:Dockerfile-映象原理Docker
- Docker如何製作映象-Dockerfile的使用Docker
- Docker 入門系列四:Dockerfile-映象製作Docker
- Docker映象中提取DockerfileDocker
- Docker--DockerFile與映象Docker
- Docker框架的使用系列教程(二)Docker框架
- Docker框架的使用系列教程(三)Docker框架
- [Docker 系列]docker 學習七,DockerFile 編寫和實戰Docker
- 【Docker 系列】docker 學習七,DockerFile 編寫和實戰Docker
- docker 映象建立與使用Docker
- Docker映象的構成__DockerfileDocker
- 用dockerfile構建docker映象Docker
- Docker 映象構建之 DockerfileDocker
- 最簡單的dockerfile使用教程 - 建立一個支援SSL的Nginx映象DockerNginx
- Docker框架的使用系列教程(四)容器的使用Docker框架
- Docker 入門系列四:Dockerfile-自定義 CentOS7 映象DockerCentOS
- Docker入門系列之二:使用dockerfile製作包含指定web應用的映象DockerWeb
- Python技巧:Docker框架的使用系列教程(一)PythonDocker框架
- dockerfile相關(4):docker常用基礎映象——java映象DockerJava
- [Docker系列·7]使用nsenter除錯Docker映象Docker除錯
- 使用 Dockerfile 定製映象Docker
- 使用Dockerfile定製映象Docker
- Docker入門系列之三:如何將dockerfile製作好的映象釋出到Docker hub上Docker
- Docker框架使用系列教程(五)容器間的連結Docker框架
- docker建立beego映象DockerGo
- docker建立web映象DockerWeb
- Docker容器學習梳理 - Dockerfile構建映象Docker
- 使用 Dockerfile 自定義 Nginx 映象DockerNginx
- 使用dockerfile構建nginx映象DockerNginx
- 使用 Dockerfile 定製映象【轉】Docker
- docker系列(二):映象Docker
- Dockerfile入門(使用Dockerfile生成jdk1.8映象)DockerJDK