1. 程式人生 > 其它 >Docker file 語法筆記

Docker file 語法筆記

docker file語法整理

Dockerfile語法規則

INSTRUCTION argument,命令不區分大小寫,但約定為全部大寫;必須以FROM命令開始,命令出現的順序就是被執行的順序

  • FROM:指定映象基於哪個基礎映象建立,後續命令會基於該基礎映象。多次使用表示會建立多個映象

FROM <image name>

  • MAINTAINER:設定該映象的作者

MAINTAINER <author name>

  • RUN:執行的shell命令,該命令會在新建立的映象上新增新的層面。

RUN <command> 如:cd target && tar -zxvf datastudio.tar.gz && chmod +x datastudio/bin/run-k8s.sh

  • ADD:複製檔案命令。引數:source 和 destination,destination 是容器內的路徑。source 可以是 URL 或者是啟動配置上下文中的一個檔案

ADD <source> <destination>

  • CMD:容器預設的執行命令。Dockerfile只允許使用一次CMD命令。多個CMD會抵消之前所有的命令,只有最後一個命令生效

CMD ["executable","param1","param2"] 或 CMD ["param1","param2"]

  • EXPOSE:指定容器在執行時監聽的埠。語法如下:

EXPOSE <port>

  • ENTRYPOINT:配置給容器的可執行命令,類似於CMD,只允許一個ENTRYPOINT,多個只執行最後一個

ENTRYPOINT ["executable", "param1","param2"]

  • WORKDIR:指定RUN、CMD與ENTRYPOINT 命令的工作目錄

WORKDIR /path/to/workdir

  • ENV:設定環境變數。鍵值對形式

ENV <key> <value>

  • USER:給映象執行時設定一個UID

USER <uid>

  • VOLUME:授權訪問從容器內到主機上的目錄

VOLUME ["/data"]

一個例項:

FROM af.xxx.com.cn/docker-ssrd/jdk/jdk8 AS stage-unzip
LABEL author="[email protected]"

# 設定環境變數和容器的 Work 目錄
ENV APP_HOME /app
ENV APP_TMP /app-tmp
WORKDIR $APP_HOME
# 複製程式碼和啟動指令碼

COPY ./target/*.zip    ${APP_TMP}/
RUN unzip ${APP_TMP}/*.zip -d ${APP_HOME}/

FROM af.xxx.com.cn/docker-ssrd/jdk/jdk8
ENV APP_HOME /app
WORKDIR $APP_HOME

COPY --from=stage-unzip app/ ${APP_HOME}
# 設定映象的啟動指令碼
ENTRYPOINT [ "sh","/app/bin/loghub/bin/run-k8s.sh" ]