Dockerfile使用詳解

2022-09-09 23:39:18 字數 2549 閱讀 5151

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 建立容器後的工作目錄,如果沒有...