docker----構建映象(Dockerfile)
阿新 • • 發佈:2020-12-29
一、規則
- 每條保留字指令都必須為大寫字母且後面要跟隨至少一個引數
- 指令按照從上到下,順序執行
- # 表示註釋
- 每條指令都會建立一個新的映象層,並對映象進行提交
二、docker執行Dockerfile流程
- docker 從基礎映象執行一個容器
- 執行一條指令並對容器作出修改
- 執行類似 docker commit 的操作提交一個新的映象層
- docker 再基於剛提交的映象執行一個新容器
- 執行 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 MYPATHdockerfile/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
#!/bin/bash set -ex docker build . -t tomcat:1.0 docker push tomcat:1.0build_image.sh
檢視映象
docker images | grep tomcat
執行映象
docker run -it tomcat:1.0
刪除映象
docker rmi tomcat:1.0