Dockerfile 是用來構建 Docker 鏡像的構建檔案,是由一系列命令和引數構成的腳本,
一、Dockerfile 介紹
1.基礎知識
每條保留字指令都必須為大寫字母且后面要跟隨至少一個引數
指令按照從上到下,順序執行
表示注釋
每條指令都會創建一個新的鏡像層,并對鏡像進行提交
2.Docker 執行 DockerFile 的大致流程
docker 從基礎鏡像運行一個容器
執行一條指令并對容器作出修改
執行類似 docker commit 的操作提交一個新的鏡像層
docker 再基于剛提交的鏡像運行一個新容器
執行 dockerfile 中的下一條指令直到所有指令都執行完成
3.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 被觸發

二、自定義鏡像
Docker Hub 中 99% 的鏡像都是通過在 base 鏡像中安裝和配置需要的軟體構建出來的,如:FROM scratch、FROM centos
1.定制 centos
使自己的鏡像具備:登陸后的默認路徑、vim 編輯器、查看網路配置 ifconfig 支持
dockerfile 檔案
FROM centos
MAINTAINER jhxxb
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
執行構建
# . 表示當前路徑
docker build -f mydockerfile -t mycentos:0.1 .
2.自定義 Tomcat9 鏡像
環境準備

dockerfile 檔案
FROM centos
MAINTAINER tyl
# 把宿主機當前目錄下的 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
在資源目錄下執行構建
docker build -f mydockerfile -t mytomcat:0.1 .

運行查看效果
docker run -d -p 9080:8080 --name myt9 -v /tmp/tomcat9logs/:/usr/local/apache-tomcat-9.0.24/logs --privileged=true mytomcat:0.1

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/256339.html
標籤:其他
上一篇:我用好評威脅外賣店老板幫我debug,他卻說Android已死,混合開發才是當今世界的主流!這個好評不要也罷!
下一篇:簡單的linux命令記錄
