Dockerfile基本用法

2021-10-06 10:40:44 字數 4225 閱讀 9974

docker 並不建議使用者通過commit方式構建映象。原因如下:

用dockerfile構建映象,底層也docker commit 一層一層構建新映象的。

1.執行docker build命令,-t將新映象命名,末尾的.指名build context為當前目錄,從當前目錄下尋找dockerfile,也可以用-f指定dockerfile的位置。

2.首先docker將build context中的所有檔案傳送給docker daemon。build context為映象構建提供所需要的檔案或目錄。dockerfile中的add,copy等命令可以將build context中的檔案新增到映象。、

檢視映象分層結構

docker history會顯示映象的構建歷史。

docker history  centos-yum:latest
映象的快取特性

docker會快取已有映象的映象層,構建新映象時,如果某映象層已經存在,就直接使用,無需重新建立。

如果我們希望在構建映象時不使用快取,可以在docker build命令中加上–no-cache引數。dockerfile中每乙個指令都會建立乙個映象層,上層依賴於下層,只要某一層發生變化,其上面的快取都會失效。

from

功能為指定基礎映象,並且必須是第一條指令,如果不以任何為映象,那麼寫法為:from scratch。

from

from :

from :

from centos7
run

為執行指定的命令,有兩種格式:(構建是就執行的命令)

1:run 後面直接跟shell命令,linux中預設 /bin/sh -c

2:run[「executable」,「param1」,「param2」] executable為可執行檔案,後面是引數

run ["/bin/bash","-c","echo hello"]注意:多行命令不要寫多個run,建議使用換行符

cmd

容器啟動時要執行的命令

1.cmd [「executable」,「param1」,「param2」]

2.cmd [「param1」,「param2」]

3.cmd command param1 param2

cmd ["ls,"/tmp"]
注意:必須要用雙引號

label

為映象指定標籤

label =…

如果有很多建議寫到一行,用換行符 \

label com.example.vendor="huhuhuhuhu" \

com.example.vendor2="huhuhuhuhuhuhuhuhuhuh"

label會繼承基礎映象的label,若key相同,則覆蓋

maintainer

指定作者

maintainer  huge
expose

開放埠,必須在容器啟動的時候加上-p引數

expose  80
env

設定環境變數

env 變數=引數 (可以一次設定多個)

env   ip=www.ip.com
add

複製命令,將檔案複製到映象中。

並且如果複製的是乙個包檔案,會將其自動解包

add   text.txt    /tmp

add /tmp

源位址 目標位址

copy

copy   text.txt   /tmp
不支援url,

entrypoint

啟動時的預設命令

entrypoint [「executable」,「param1」,「param2」]

entrypoint command param1 param2

entrypoint  ["ls","/tmp"]
也可以不加檔案或目錄

entrypoint  ["ls"]
在容器啟動時後面加上可執行檔案

docker run -it centos-yum:latest  /tmp
與cmd一起使用時:可以檢視cmd指定的檔案或目錄

cmd ["/etc","/"]

entrypoint ["ls"]

如果我們同時寫了cmd與entrypoint,並且都是完整指令,那麼會覆蓋,誰在後面誰生效

user

設定啟動容器的使用者

user daemo

user uid

user  www
注意:如果設定了容器以daemon使用者去執行,那麼run,cmd,和entrypoint都會以這個使用者去執行

workdir

設定工作目錄

workdir   /www
對run,entrypoint,copy,add生效。

如果不存在則會建立,也可以設定多次

workdir /a

workdir /b

workdir /c

run pwd

執行結果是 /a/b/c

workdir也可以解析環境變數

env dir  /path

workdir $dir

arg

arg 設定變數命令,arg定義了乙個變數,在docker build建立的時候,使用 --build-arg =來指定引數

也可以給乙個預設值

arg  user1="www"
onbuild

onbuild [instruction]

只對當前的子映象生效

onbuild  run  touch 1.txt
stopsignal

當容器退出時傳送乙個什麼樣的指定給系統

healthcheck

容器健康狀況檢查:

healthcheck [options] cmd command 是在容器內部執行乙個命令來檢查容器的健康狀況

healthcheck none第二個的功能是在基礎映象中取消健康檢查命令

[options]的選項支援以下三中選項:

--interval=duration 	 兩次檢查預設的時間間隔為30秒

--timeout=duration 康檢查命令執行超時時長,預設30秒

--retries=n 連續失敗指定次數後,則容器被認為是不健康的,狀態為unhealthy, 預設次數是3

注意: healthcheck命令只能出現次,如果出現了多次,只有最後乙個生效。cmd後邊的命令的返回值決定了本次健康檢查是否成功,具體的返回值如下:

0: success -表示容器是健康的

1: unhealthy-表示容器已經不能工作了

2: reserved -保留值

healthcheck - - interval=5m --timeout=3s \

cmd curl -f http://localhost/ || exit 1

健康檢查命令是: curl -f http://localhost/ || exit 1 兩次檢查的間隔時間是5秒 命令超時時間為3秒

Dockerfile檔案用法

場景 根據業務需求以及個人使用習慣,大部分執行的容器使用的映象,均需要自己去編譯映象。from 基礎映象 maintainer 維護者的記錄資訊 run 執行shell命令,盡量執行在同一映象層,減少構建映象層數 add 複製檔案指令。它有兩個引數和。該命令將複製指定的 到容器中的 其中 可以是do...

Dockerfile基本結構

1.dockerfile是乙個文字格式的配置檔案,使用者可以使用dockerfile快速建立自定義的映象。2.dockerfile檔案分為四個部分 a.基礎映象資訊 在dockerfile中使用 完成一行的註解 第一行必須制定基礎映象 from centos b.維護者資訊 維護者資訊 mainta...

Dockerfile用法全解析

1 dockerfile中的內容如下 from alpine copy src run echo 321 1.txt cmd tail f 1.txt 或者cmd cat 1.txt或者cmd cat 1.txt 2 在命令列輸入 t表示構建成的映象名字是 test,指定版本就是test lates...