(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容器則涉及部...