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...