1. 程式人生 > 其它 >Docker從入門到精通<6>

Docker從入門到精通<6>

Dockerfile自動構建docker映象

FROM [--platform=<platform>] <image>[@<digest>] [AS <name>] # 構建新映象所依賴的基礎映象

RUN<command> |["executable", "param1", "param2"]

執行命令,這裡有兩種方式,第一種預設直接呼叫系統shell,第二種會轉換為json,所以一定要用雙引號。如果命令比較長可以使用反斜槓進行換行處理。

shell形式不同exec形式不呼叫命令 shell。這意味著不會發生正常的 shell 處理。

例如,RUN [ "echo", "$HOME" ]不會對 進行變數替換$HOME如果你想要 shell 處理,那麼要麼使用shell形式,要麼直接執行 shell,例如:RUN [ "sh", "-c", "echo $HOME" ].當使用 exec 形式並直接執行 shell 時,就像 shell 形式一樣,是 shell 進行環境變數擴充套件,而不是 docker。

如果命令中需要轉義,需要用反斜槓進行轉義。

ADD

  ADD [--chown=<user>:<group>] <src>... <dest>

  ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

把檔案、目錄、或者遠端的檔案的url,從src 拷貝到 映象 的檔案系統中的dest位置。

注意:

1. --chown 僅適用於linux系統。

2. src原始檔等可以進行模糊匹配,指定go語言中的filepath.Match,支援 .*?

3. dest 的位置,是相對於WORKDIR的位置,比如WORKDIR 為/data/, dest為app/,那麼實際上的dest路徑為/data/app/

COPY

CMD 指定在容器中執行的命令。跟run不同,run是指在構建構建映象時執行的命令

LABEL<key>=<value> <key>=<value> <key>=<value> ... 構建完映象後,我們可以通過

docker image inspect --format='' myimage 檢視標籤資訊

MAINTAINER 作者資訊,已經棄用,可以用label取代

EXPOSE<port> [<port>/<protocol>...] 指定docker容器在執行時偵聽的埠,還可以指定協議是TCP,還是UDP,預設為TCP,例如:EXPOSE 80/TCP, 無論這個引數如何設定docker -p 都將覆蓋這個引數,-P表示可以設定隨機埠。

ENV 設定環境變數,後續的構建中可以進行引用和替換。

FROM busybox
ENV FOO=/bar
WORKDIR ${FOO}   # WORKDIR /bar
ADD . $FOO       # ADD . /bar
COPY \$FOO /quux # COPY $FOO /quux

STOPSIGNAL

USER

VOLUME

WORKDIR

ONBUILD(when combined with one of the supported instructions above)

擁抱不確定,未來可期!喜歡該文章請不吝點贊推薦,如有疑問歡迎留言,我們一起探討。