2020 Dockerfile常見用法

2021-10-08 11:21:54 字數 1479 閱讀 3438

copy和add比較相似,copy一般源位址為當前的這個檔案系統的原位址;

add 的位址不光是可以是檔案系統,還可以是乙個url;

如有沒有用到網路資源用copy就可以了

和run很像,但是run是構建的時候就執行語句指令碼,cmd在容器真正執行的時候才會真正執行

entrypoint和cmd也很像,但是倆如果未指定都是繼承自父映象,如果祖輩也沒有知道cmd或者entrypoint,則映象無法構建(如果entrypoint非json則以entrypoint為準,如果entrypoint和cmd都是json則entrypoint+cmd拼接成shell)

expose(指定當前我們的映象所暴露出來的乙個埠)

例如執行docker inspect nginx:1.13 (我們可以在裡面看到配置檔案exposedports 80/tcp)

volume/a/b(把容器中的/a/b這個目錄對映到宿主機的乙個目錄下)

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

指定引數的幾種方式:

env(可以指定當前容器的環境 變數,這是乙個構建引數,只有在構建和執行時候都生效的,是系統的乙個環境變數)

arg(這是乙個構建引數,只有在構建的時候才有效,真正執行的時候就無效了)

label(主要是用來指定源資料,沒有實際作用)

onbuild(後面可以接任意引數 如 onble env a=10)

stopsignal(指定我們當前容器用什麼樣的訊號名)

healthcheck(容器的健康情況)

shell(基於哪種shell; linux 一般是/bin/bash; windows 一般是cmd)

from alpine:latest 

run echo 123>>1.txt  

cmd tail -f  1.txt

#cmd 一般指定為阻塞方式如tail -f指令碼 到此整個生命週期就結束了

#cmd cat 1.txt(這是乙個非阻塞的)

#構建乙個名字為test映象( .表示這個dockerfile位於當前路徑下)

docker build -t test .

docker run test

用Dockerfile定製映象

從剛才的 docker commit 的學習中,我們可以了解到,映象的定製實際上就是定製每一層所新增的配置 檔案。如果我們可以把每一層修改 安裝 構建 操作的命令都寫入乙個指令碼,用這個指令碼來構建 定製映象,那麼之前提及的無法重複的問題 映象構建透明性的問題 體積的問題就都會解決。這個指令碼就是 ...

遞迴演算法常見用例

1.遞迴逆序列印字串 void reverse char s 2.遞迴方式將鍊錶逆序 p 為指向非空單鏈表中第乙個結點的指標,本演算法逆轉鍊錶並返回逆轉後的頭指標。基本思路是 如果鍊錶中只有乙個結點,則空操作,否則先逆轉a2開始的鍊錶,然後將 a1聯接到逆轉後的鍊錶的表尾 即a2 之後。linkli...

API之NSDictionary的常見用法

nsdictionary dic1 nsdictionary alloc initwithobjectsandkeys 李四 name 不明 gender nil 字典中的物件可以重複儲存 71 instancetype initwithobjectsandkeys id firstobject,n...