Docker file 語法筆記
阿新 • • 發佈:2022-01-28
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" ]