dockerfile是一種被docker程式解釋執行的指令碼,由一條條的命令組成,每條命令對應linux下面的一條命令,docker程式將這些dockerfile指令在翻譯成真正的linux命令,其有自己的書寫方式和支援的命令,docker程式讀取dockerfile並根據指令生成docker映象,相比手動製作映象的方式,dockerfile更能直觀的展示映象時怎麼產生的,有了dockerfile,當後期有額外的需求時,只要在之前的dockerfile新增或者修改相應的命令即可重新生成新的docker映象,避免了重複手動製作映象。
docker守護程式dockerfile逐一執行指令。
exec格式
env:設定環境變數,會被後續指令通過$key或$進行引用,並在容器執行時保持
copy:複製本地宿主機的檔案到容器內
add:該命令可認為是增強版的copy,不僅支援copy,還支援自動伸縮。可以將複製指定的檔案到容器內
cmd:啟動容器命令
entrypoint:功能類似於cmd,配置容器啟動後執行的命令及引數
arg:構建引數,在build階段指定變數和env不同的是,容器執行時不會存在這些環境變數
volume:匿名卷
expose:暴露埠,指定服務端的容器需要對外暴露的埠號,以實現容器與外部通訊
workdie:指定工作目錄,為後續的run、cmd、entrypoint指定配置工作目錄,當容器執行後,進入容器內workdir指定的預設目錄,當該目錄不存在時會自動建立
onbuild:子映象引用父映象的指令,可以用來配置當構建映象的子映象時,會自動觸發執行的指令,但在當前映象構建時,並不會執行,即延遲到子映象構建時才執行
user:指定當前使用者,指定執行容器的使用者名稱或uid,後續的run也會指定使用者,需要指定的使用者名稱存在
healthcheck:健康檢查
stopsignal:退出容器的訊號
shell:指定shell
與.gitignore檔案類似,生成構建上下文時docker客戶端應忽略的檔案和資料夾指定模式。
.dockerignore使用go的檔案路徑規則filepath.match
~# docker build -h
flag shorthand -h has been deprecated, please use --help
usage: docker build [options] path | url | -
options:
--add -host list #新增乙個自定義主機到ip的對映(host:ip)
--build-arg list #設定構建時變數
--cache-from strings #影象作為快取源
--cgroup-parent string #容器的可選父cgroup
--compress #使用gzip壓縮構建上下文
--cpu -period int #限制cpu的cfs(完全公平排程)週期
--cpu -quota int #限制cpu cfs(完全公平排程)配額
-c,--cpu -shares int #cpu份額(相對權重)
--cpu -cpu string #允許執行的cpu (0-3, 0,1)
--cpuset-mems string #允許執行的mems (0- 3,0,1)
--disable-content-trust #跳過影象驗證(預設為true)
-f,--file string # dockerfile的名稱(預設為'path/dockerfile')
--force-rm #始終刪除中間容器
--iidfile string #將影象id寫入檔案
--isolation string #容器隔離技術
--label list #設定影象的元資料
-m,--記憶體位元組#記憶體限制
--memory-swap bytes #交換限制等於記憶體加上交換:'-1'表示啟用無限交換
--network string #在構建過程中設定run指令的網路模式(預設為「default」)
--no-cache #在構建映像時不要使用快取
--pull #總是嘗試拖**像的新版本
-q,--quiet #在成功時禁止構建輸出和列印映像id
--rm #在成功構建後刪除中間容器(預設為true)
--security -opt strings #安全選項
--shm-size bytes # /dev/shm的大小
-t,--tag list #名稱和乙個可選的' name:tag'格式的標籤
--target string #設定目標構建階段為構建。
--ulimit ulimit # ulimit選項(預設)
docker build .
docker build -f /path/to/a/dockerfile .
Dockerfile 指令詳解
一種通過commit的方式 把做了一系列操作的容器關閉,然後利用docker的commit指令 dockercommit 容器id 映象名 tag。然後dockerpush到映象倉庫。別人pull下來的再次啟動的時候,就是你當前的操作的形態。另一種是通過dockerfile構建的方式 把操作的步驟通...
Dockerfile檔案詳解
一 dockerfile檔案 二 配置檔案詳解 1.from centos 我們的docker是基於哪個基礎映象的 我們的工作目錄 3.copy metadata metadata 將本地的專案拷貝到docker內部 4,run命令 在docker內部執行一下命令,可以是安裝軟體,新建資料夾等操作 ...
DockerFile命令詳解
form 基礎映象,當前新映象是基於哪個映象的,例如我要建立乙個centos的映象,我要拉取父映象 from centos maintainer 映象的作者,一般是姓名 郵箱位址 run 容器構建時執行的命令 expose 暴露新建的映象對外服務的埠號 workdir 建立容器後的工作目錄,如果沒有...