映象的定製實際上就是定製每一層所新增的配置和檔案。
如果可以把每一層修改、安裝、構建、操作的命令都寫入到乙個指令碼,用這個指令碼檔案來構建、定製映象,並且重複利用、映象的構建透明化、體積的優化。那這個指令碼稱之為dockerfile
目前的倉庫映象很難找到乙個滿足專案需求、非常好用的映象,就需要自定義映象
基本指令有13個,指令必須大寫,分別是:
from
maintainer
runcmd
expose
envadd
copy
enterpoint
volume
user
workdir
onbuild
3.1 from
用法:from
說明:dockerfile第乙個指令必須為from
其指定乙個構建映象的基礎源映象,如果本地docker映象沒有則會從公共庫中拉取pull,沒有指定映象的tag則會使用預設的latest標籤tag,可以出現很多次,如果想在同乙個dockerfile中構建多個映象
3.2 maintainer
用法: maintainer
說明:描述映象的建立者名稱和郵箱
3.3 run
用法:run「command」「param1」「param2」「…」
說明: run命令是執行之後會生成乙個新的映象,也可以是映象的分層構建。一句run就是乙個分層,也就相當於乙個版本。run後面的都需要雙引號,不能用單引號,也可以不寫?yes or no.
3.4 cmd
用法:cmd[「command」,「param1」,「paran2」,"…"]
說明:cmd命令在dockerfile中只能出現一次,如果有多次,則只有最後一次生效
3.5 expose
用法:expose port1 port2 …
說明:設定容器對外對映的容器埠號,在docker run -p的時候生效
3.6 env
用法:env
說明:1.env用於定義映象的環境變數,定義環境變數的同事,可以引入已經定義的環境變數
在env指令中,可以直接引用如下環境變數:
home,使用者主目錄
hostname,預設容器的主機名
path,
term,預設xterm
2.由於映象的層次檔案系統,env定義的環境變數在後續層次中才能夠被應用
3.啟動容器後,在容器例項中,可以通過env命令檢視環境變數
3.7 add
用法:add
說明: 複製宿主機本地檔案或者目錄或者遠端檔案,新增到指定容器目錄支援正則。路徑是絕對路徑,不存在自動建立。如果源是乙個目錄只會複製目錄下的內容,目錄本身不會複製。add命令會將複製的壓縮資料夾自動解壓
3.8 copy
用法:copy
說明:src 表示源 宿主機上的源,源代表著檔案或者檔案目錄
dest 表示 容器中的指定檔案
說明:copy除了不能自動解壓,也不能複製網落檔案。其他功能和add相同。
3.9 entryopint
用法:entryopint 「command」 「param1」「…」
說明: 和cmd一樣,唯一的區別是不能被docker run命令的執行命令覆蓋,如果想覆蓋則需要帶上 --entrypoint,如果是多項則最後乙個有效
3.10 volume
用法:volume【「path」】
說明: 在宿主機上建立乙個掛載,掛載到容器的指定路徑,docker run -v命令也能實現掛載,而且更強大。這個命令不能指定宿主機的需要掛載到容器的檔案目錄的路徑,但是docker -v可以,而且docker -v也可以掛載資料容器
3.11 user
用法:user
說明:user指令用於指定容器執行程式的使用者身份,預設是root使用者。在docker run中可以通過 -u選項覆蓋user指令的設定
注意:docker容器中的root使用者密碼是隨機分配的
3.12 workdir
用法:workdir path
說明:為run、copy、entrypoint指定配置工作目錄。可以使用多個workdir後續引數如果是相對路徑,則會基於之前的命令指定的路徑。比如: wopkdir/home workdir test 最終的路徑為/home/test
如果設定對了環境變數 例如當前的環境變數 home =/home
則 workdir $home /test 也是/home/test
3.13 onbuild
用法:onbuild copy
說明:映象觸發器,當乙個映象被其他映象作為基礎映象是執行
Dockerfile的基礎命令
docker ce的配置檔案 etc docker daemon.json docker映象站點在國外,可以配置加速器來進行映象拉取加速 docker cn 將下列字串新增到 etc docker daemin.json 中國科技大學 阿里雲加速器 需要註冊阿里雲,然後獲得專用加速器2.1 基於容器...
Dockerfile 基礎介紹
這是本專欄的第三部分 映象篇,共 8 篇。前兩篇我為你介紹了 docker 映象生命週期的管理,以及映象的構建和分發方式。本篇,我來為你介紹 dockerfile 帶你理解 dockerfile 中的重點知識,方便你自己定義構建映象的行為。下面我們一起進入本篇的學習。在前面的內容中,我有寫過幾個 d...
DockerFile命令詳解
form 基礎映象,當前新映象是基於哪個映象的,例如我要建立乙個centos的映象,我要拉取父映象 from centos maintainer 映象的作者,一般是姓名 郵箱位址 run 容器構建時執行的命令 expose 暴露新建的映象對外服務的埠號 workdir 建立容器後的工作目錄,如果沒有...