k8s記錄-Dockerfile詳解


 

 

Dockerfile命令詳解

下面我們來分別介紹下上面使用到的命令:

FROM

格式:FROM 或FROM :。 解釋:FROM必須是Dockerfile里的第一條指令(注視除外),后面跟有效的鏡像名(如果該鏡像你的本地倉庫沒有則會從遠程倉庫Pull取)。然后后面的其它指令FROM的鏡像中執行。

MAINTAINER

格式:MAINTAINER 解釋:指定維護者的信息。

RUN

格式:RUN 或 RUN ["executable", "param1", "param2"]。 解釋:運行命令,命令較長使可以使用來換行。推薦使用上面數組的格式

CMD

格式:

CMD ["executable","param1","param2"] 使用 exec 執行,推薦方式; CMD command param1 param2 在 /bin/sh 中執行,提供給需要交互的應用; CMD ["param1","param2"] 提供給ENTRYPOINT的默認參數;

解釋:

CMD指定容器啟動是執行的命令,每個Dockerfile只能有一條CMD命令,如果指定了多條,只有最后一條會被執行。如果你在啟動容器的時候也指定的命令,那么會覆蓋Dockerfile構建的鏡像里面的CMD命令。

ENTRYPOINT

格式:

ENTRYPOINT ["executable", "param1", "param2"] ENTRYPOINT command param1 param2(shell中執行)。 解釋:和CMD類似都是配置容器啟動后執行的命令,並且不可被 docker run提供的參數覆蓋。

每個 Dockerfile 中只能有一個ENTRYPOINT,當指定多個時,只有最后一個起效。ENTRYPOINT沒有CMD的可替換特性,也就是你啟動容器的時候增加運行的命令不會覆蓋ENTRYPOINT指定的命令。

所以生產實踐中我們可以同時使用ENTRYPOINT和CMD,例如:

ENTRYPOINT ["/usr/bin/rethinkdb"]
CMD ["--help"]

USER

格式:USER daemon 解釋:指定運行容器時的用戶名和UID,后續的RUN指令也會使用這里指定的用戶。

EXPOSE

格式:EXPOSE [...] 解釋:設置Docker容器內部暴露的端口號,如果需要外部訪問,還需要啟動容器時增加-p或者-P參數進行分配。

ENV

格式:ENV ENV = ... 解釋:設置環境變量,可以在RUN之前使用,然后RUN命令時調用,容器啟動時這些環境變量都會被指定

ADD

格式: ADD ... ADD ["",... ""] 解釋:將指定的復制到容器文件系統中的

所有拷貝到container中的文件和文件夾權限為0755,uid和gid為0
如果文件是可識別的壓縮格式,則docker會幫忙解壓縮

VOLUME

格式:VOLUME ["/data"] 解釋:可以將本地文件夾或者其他container的文件夾掛載到container中。

WORKDIR

格式:WORKDIR /path/to/workdir 解釋:切換目錄,為后續的 RUN、CMD、ENTRYPOINT 指令配置工作目錄。可以多次切換(相當於cd命令),也可以使用多個 WORKDIR指令,后續命令如果參數是相對路徑,則會基於之前命令指定的路徑。 例如:

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd

則最終路徑為 /a/b/c。

ONBUILD

ONBUILD 指定的命令在構建鏡像時並不執行,而是在它的子鏡像中執行

ARG

格式:ARG [=] 解釋:ARG指定了一個變量在docker build的時候使用,可以使用--build-arg =來指定參數的值,不過如果構建的時候不指定就會報錯。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM