cmd,run,entrypoint之類的差別。
volumn和-v之間的差別。
expose和-p的對應等。
今天上午寫了乙個指令碼,可以傳引數進image,讓啟動的container具有不同的行為。
另外是一些常用的方便命令:
刪除所有正在執行的容器(先停止,再刪除)。
docker stop $(docker ps -q) && docker rm $(docker ps -a -q)啟動映象(包括埠對映,目錄掛載-如果windows,那不是掛windows目錄,是虛擬機器目錄,命令容器,傳遞引數)
如果在dockerfile中同時寫了entrypoint和cmd,docker在build過程中會將cmd中指定的內容作為entrypoint的引數。
那麼如果,我們希望每個容器都固定的執行乙個config指令碼,然後再執行特定的程式時,利用entrypoint和cmd可以如何做到呢?從上述分析可以很自然的想到,將entrypoint解析cmd引數,並以命令執行。
cmd命令的引數格式,一般寫成 字串陣列的方式,如上面的例子。如:
cmd ["echo","hello world"]
雖然也可寫成cmd echo hello word 方式,但這樣docker會在指定的命令前加 /bin/sh -c 執行,有時有可能會出問題。 所以推薦採用資料結構的方式來存放命令。
dockerfile 中的 entrypoint 和 cmd
看似一樣,都是實現 container 啟動命令,但是需要注意:
1、都有兩種方式,陣列方式,以及 shell 方式?
12
[
"sh"
,
"-c"
,
"echo hello"
]
sh -c
'echo hello'
2、entrypoint 除了指定 container 入口之外,更重要的作用是: 通過它可以讓乙個 container 像乙個 executable 一樣。比如?
1entrypoint ["/bin/sh"]
之後 build 出來的映象就像乙個 sh 程式檔案一樣,執行該 image,就像執行 sh 程式。
3、如果 entrypoint 指定了,並且採用了陣列方式,即["exectable", "para1", "para2"]
,那麼 cmd 指定的內容會被視為 entrypoint 陣列中最後的乙個引數
4、如果 entrypoint 使用 shell 方式,那麼它會覆蓋所有的 cmd 以及docker run
後面指定的 command
5、docker run
後面指定的 command 會取代 cmd 的內容
(十)DockerFile的編寫
dockerfile是用來構建docker映象的構建檔案,是由一系列命令和引數構成的指令碼。編寫dockerfile檔案 docker build docker run 下圖官方版docker版centos的dockerfile檔案 scrath是一切映象的根映象,cmd是會執行後面的命令 每條保留...
Dockerfile編寫記錄
dockerfile 近期幫朋友製作了docker映象以方便使用,在製作的過程中經歷了相容問題,映象size臃腫,映象內多服務問題,下面開始碼例項。from euleros workdir opt add opencv 4.1.0.tar.gz opt run rpm rpmbuilddb yum ...
Dockerfile編寫語法
docker映象本質上就是乙個個基礎映象的堆疊,為了做出我們想要的映象,我們需要考慮最終映象所需的所有基礎環境,然後一層層堆疊.也就是不斷以基礎映象搭建上層映象.先看例子 version 1.0.0 create time 2015 12 25 11 04 author description 基於...