Dockerfile用法全解析

2021-10-02 21:51:04 字數 3603 閱讀 8532

(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:latest,點表示位於當前目錄

docker build -t test .

docker run test

123321

from 表示基於什麼什麼映象

workdir 表示:當前的工作目錄,shell語句執行在哪個路徑下,沒有目錄會自動建立

copy 將宿主機的檔案拷貝至容器中的目錄下

run 在構建的時候,就要執行的指令碼shell語句

cmd 容器執行的時候,才會執行的指令碼,該語句執行完畢後,映象的生命週期也就結束了,所以一般可以

指定為阻塞式的,eg:tail -f--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-expose 指定當前映象所暴露出來的埠

eg:docker inspect nginx中的config這一項的exposedports就是暴露出的埠,可以通過

docker run p 將該埠對映到主機的隨機埠,若將net指定為host模式,會將該埠繫結到本機

的80埠

volume /a/b 指定對映檔案,一般是對映到匿名卷,將容器中的/a/b目錄對映到主機的乙個目錄下,

eg:docker run中-p和-v都分別指定對映到外部的埠和目錄--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-env 指定引數,容器的環境變數,docker -e可以指定環境變數,容器執行時的環境變數

eg:from alpine

copy src/

env a=

10 或者 env a 10

cmd echo $a

arg 構建引數,只有構建的時候才會有效,構建指的是:docker build

其實際作用是通過引數-

-build-arg指定變數的值,在構建時起到臨時修改內部變數的效果

在dockerfile中其值相當於預設引數

eg:from alpine

copy src/

arg b=

10env a=$b

cmd echo $a

執行的結果是10

如果使用docker build -t test -

-build-arg b=12.

構建後,再執行的結果是:12--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-label 指定元資料資訊,作用就是看映象是否有標識,沒啥具體作用

eg:from alpine

label k=

"v" k1=

"v1"

copy src/

arg b=

10env a=$b

cmd echo $a

onbuild 後面可以接dockerfile其它的命令,指定在當前映象下不會去執行

若另乙個映象是基於當前映象的話,就會在另乙個映象的from後面執行onbuild,就是會繼承父映象相關指令

eg:from alpine

label k=

"v" k1=

"v1"

copy src/

onbuild env c=

100cmd echo $c

再建立乙個teset2目錄,且新建乙個dockerfile檔案

from test

執行命令:在test2目錄下,構建了乙個名為test2的映象(-t引數)

docker build -t test2 test2

docker run test

最終列印100

docker run test

會列印空行--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-stopsignal 指定容器用什麼訊號可以停止,很少用,eg:stopsignal siginit,stopsignal kill

healthcheck 檢查容器是否健康

sheel 指定run,cmd是哪種shell,linux一般預設是/

bin/sh--

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

----

-(1)copy與add的區別:

都是可以從主機外複製到映象裡面

copy的源位址是主機檔案系統的源位址,add的源位址不僅可以是主機檔案系統的源位址,還可以是url

推薦使用copy

(2)cmd與eentrypoint的區別:

都是指定容器執行起來的核心指令碼

若entrypoint的形式非json陣列形式,則以entrypoint為準,cmd指令無效;

entrypoint和cmd都是json,則entrypoint+cmd拼接成shell語句來執行;

onbuild用法的對應

Dockerfile基本用法

docker 並不建議使用者通過commit方式構建映象。原因如下 用dockerfile構建映象,底層也docker commit 一層一層構建新映象的。1.執行docker build命令,t將新映象命名,末尾的.指名build context為當前目錄,從當前目錄下尋找dockerfile,也...

Dockerfile檔案用法

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

DockerFile構建過程解析

從應用軟體的角度來看,dockerfile docker映象與docker容器分別代表軟體的三個不同階段,dockerfile是軟體的原材料 docker映象是軟體的交付品 docker容器則可以認為是軟體的執行態。dockerfile面向開發,docker映象成為交付標準,docker容器則涉及部...