1. 程式人生 > 實用技巧 >docker----構建映象(Dockerfile)

docker----構建映象(Dockerfile)

一、規則

  • 每條保留字指令都必須為大寫字母且後面要跟隨至少一個引數
  • 指令按照從上到下,順序執行
  • # 表示註釋
  • 每條指令都會建立一個新的映象層,並對映象進行提交

二、docker執行Dockerfile流程

  1. docker 從基礎映象執行一個容器
  2. 執行一條指令並對容器作出修改
  3. 執行類似 docker commit 的操作提交一個新的映象層
  4. docker 再基於剛提交的映象執行一個新容器
  5. 執行 dockerfile 中的下一條指令直到所有指令都執行完成

三、Dockerfile保留字

FROM:基礎映象,當前新映象是基於哪個映象的

MAINTAINER:映象維護者的姓名和郵箱地址

RUN:容器構建時需要執行的命令

EXPOSE:當前容器對外暴露出的埠

WORKDIR:指定在建立容器後,終端預設登陸的進來工作目錄,一個落腳點

ENV:用來在構建映象過程中設定環境變數

ADD:將宿主機目錄下的檔案拷貝進映象且 ADD 命令會自動處理 URL 和解壓 tar 壓縮包

COPY:類似 ADD,拷貝檔案和目錄到映象中。(COPY src dest 或 COPY ["src","dest"])

VOLUME:容器資料卷,用於資料儲存和持久化工作

CMD:指定一個容器啟動時要執行的命令,Dockerfile 中可以有多個 CMD 指令,但只有最後一個生效,CMD 會被 docker run 之後的引數替換

ENTRYPOINT:指定一個容器啟動時要執行的命令,ENTRYPOINT 的目的和 CMD 一樣,都是在指定容器啟動程式及引數

ONBUILD:當構建一個被繼承的 Dockerfile 時執行命令,父映象在被子繼承後父映象的 onbuild 被觸發

四、自定義 tomcat9 映象

FROM centos

# 把宿主機當前目錄下的 jdk1.8.0_221 拷貝到容器 /usr/local/ 路徑下
COPY jdk1.8.0_221/ /usr/local/jdk1.8.0_221/

# 把宿主機當前目錄下的 tomcat 新增到容器 /usr/local/ 路徑下
ADD apache-tomcat-9.0.24.tar.gz /usr/local/

# 安裝vim編輯器
RUN yum -y install vim

# 設定工作訪問時候的 WORKDIR 路徑,登入落腳點
ENV MYPATH 
/usr/local WORKDIR $MYPATH # 配置 java 與 tomcat 環境變數 ENV JAVA_HOME /usr/local/jdk1.8.0_221 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.24 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.24 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin # 容器執行時監聽的埠 EXPOSE 8080 # 啟動時執行 tomcat # ENTRYPOINT ["/usr/local/apache-tomcat-9.0.24/bin/startup.sh" ] CMD ["/usr/local/apache-tomcat-9.0.24/bin/catalina.sh","run"] # CMD /usr/local/apache-tomcat-9.0.24/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.24/bin/logs/catalina.out
dockerfile
#!/bin/bash
set -ex
docker build . -t tomcat:1.0
docker push tomcat:1.0
build_image.sh

檢視映象

docker images | grep tomcat

執行映象

docker run -it tomcat:1.0

刪除映象

docker rmi tomcat:1.0