DockerFile
DockerFile介紹
DockeFile是用來構建docker鏡像的描述文件,命令參數的腳本。
構建步驟
1、編寫一個 dockerfile 文件
2、docker build 構建成為一個鏡像
3、docker run 運行鏡像
4、docker push 發布鏡像
DockerFile構建過程
基礎知識:
1、每個保留關鍵字(指令)都是必須是大寫字母
2、執行從上到下順序執行
3、#表示注釋
4、每一個指令都會創建提交一個新的鏡像層,并提交!

Docker指令說明

FROM # 基礎鏡鏡像,一切從這里開始構建
MAINTAINER # 鏡像是誰寫的,姓名+郵箱
RUN # 鏡像構建的時候需要運行的命令
ADD # 步驟: tomcat鏡像,這個tomcat壓縮包! 添加內容
WORKDIR # 鏡像的工作目錄
VOLUME # 掛載的目錄
EXPOSE # 保留端口配置
CMD # 指定這個容器啟動的時候要運行的命令,只有最后一個會生效,可被替代
ENTRYPOINT # 指定這個容器啟動的時候要運行的命令,可以追加命令
ONBUILD # 當構建一個被繼承 DockerFile 這個時候就會運行 ONBUILD 的指令。觸發指令。
COPY # 類似ADD ,將我們文件拷貝到鏡像中
ENV # 構建的時候設置環境變量 !

CMD和ENTRYPOINT 區別
cmd執行的命令不可以被追加,以第一個為準,entrypoint執行的命令可以追加命令
DockerFile實例
########### 以下以Java生態springboot應用為例 ############
# 設置基礎鏡像
FROM artifacthub.XXX.work/idp-hub/uniontechos-server-20-1050u2a-amd64:2.0.2 as builder
#非root用戶啟動需要指定用戶和組的ID,方便在initContainers里面進行處理
ARG user=ahyth
ARG group=appuser
ARG uid=1000
ARG gid=1000
#根據maven插件傳參而來,為避免忘記傳參報錯,此處設置默認值demo
ARG APP_NAME
ENV APP_NAME=${APP_NAME}
#新建ahyth普通用戶并切換為ahyth
#RUN bash -c 'groupadd -r appuser && useradd -r -g appuser ahyth'
RUN groupadd -r $group -g $gid && useradd -r -g $group -u $uid $user
ADD ${APP_CONTEXT_PATH}target/${APP_NAME}-package.tar.gz /idp/service
RUN mkdir -p /idp/logs/XXX
# 設置工作目錄
ENV WORK_PATH=/idp/service/${APP_NAME} \
CONFIG_PATH=/idp/service/${APP_NAME}/config \
DATA_PATH=/idp/service/${APP_NAME}/data \
SCRIPT_PATH=/idp/service/${APP_NAME}/bin \
LOG_PATH=/idp/logs/yth-dm-directory-catalog-web \
JAR_NAME=${APP_NAME} \
LAUNCHER_OPTS="-Djavax.net.ssl.trustStore=/idp/public/jdk-17.0.2/lib/security/cacerts -Djavax.net.ssl.trustStorePassword=ahythidp" \
JAVA_OPTS="-server"
ENV JAVA_OPT="-Dlog.path=$LOG_PATH -Dlogging.config=$CONFIG_PATH/logback-spring.xml -Dspring.config.location=$CONFIG_PATH/bootstrap.yml "
# 創建及設置工作目錄
WORKDIR $WORK_PATH
RUN chown -R $user:$group /idp && chmod -R 755 /idp
RUN chown -R $user:$group /home && chmod -R 755 /home
USER $user
# 容器啟動時的默認命令
ENTRYPOINT [ "/bin/bash", "-c", "java -jar $JAVA_OPT $JAVA_OPTS $JAR_NAME.jar $LAUNCHER_OPTS " ]

浙公網安備 33010602011771號