Docker 之 Dockerfile
阿新 • • 發佈:2021-12-22
Dockerfile 是一個用來構建映象的文字檔案,文字內容包含了一條條構建映象所需的指令和說明。
一、官方映象
學習docker映象的製作之前,先去看看官方的映象是怎麼製作的,檢視官方dockerfile的方式如下所示
-
進入官方映象倉庫,搜尋映象,如下圖所示
-
找到映象後,檢視的相應的版本資訊並進入到github
-
進入github後,即可看到官方的Dockerfile,通過Dockerfile檔案後,可以清晰的看到映象的製作過程
二、Dockerfile構建過程
- 基礎知識:
- 每個關鍵字(指令)都必須是大寫字母
- 執行流程是從上到下順序執行
- "#" 表示註釋
- 每一個指令都會建立提交一個新的映象層,並提交
- 步驟
- Dockerfile:構建檔案,定義了一切的步驟,原始碼
- Dockerimages:通告Dockerfile構建生成的映象,最終釋出執行的產品
- Docker容器:容器就是映象執行起來提供服務
三、命令
FROM # 基礎映象,一切從這開始構建 MAINTAINER # 映象是誰寫的,姓名+郵箱 RUN # 映象構建的時候需要執行的命令 ADD # 新增內容 WORKDIR # 映象的工作命令 VOLUME # 定義匿名資料卷。在啟動容器時忘記掛載資料卷,會自動掛載到匿名卷。 EXPOSE # 指定暴露埠 CMD # 指定容器啟動的時候執行的命令,只有最後一個會生效,可被替代 ENTRYPOINT # 指定這個容器啟動的時候要執行的命令可以追加命令 ONBUILD # 當構建一個被繼承的 dockerfile ,這個時候就會執行ONBUILD的指令,觸發指令 COPY # 複製指令,從上下文目錄中複製檔案或者目錄到容器裡指定路徑。 ENV # 構建的時候設定環境變數 ARG # 構建引數,與 ENV 作用一致。不過作用域不一樣。 USER # 用於指定執行後續命令的使用者和使用者組 HEALTHCHECK # 用於指定某個程式或者指令來監控 docker 容器服務的執行狀態。 LABEL # LABEL 指令用來給映象新增一些元資料(metadata)
具體的命令使用請看考菜鳥教程的命令介紹
四、Dockerfile編寫
這裡我們編寫自己的Tomcat映象進行測試
- 準備映象檔案,這裡需要Tomcat和jdk的壓縮包
- 編寫Dockerfile檔案,檔案命名為Dockerfile,build會自動尋找這個檔案,否則編譯時需要使用-f指定
FROM ubuntu:16.04 MAINTAINER jiaozhu<[email protected]> # 名字 COPY readme.txt /usr/local/readme.txt #複製檔案 ADD jdk-8u311-linux-x64.tar.gz /usr/local/ #複製解壓 ADD apache-tomcat-9.0.56-src.tar.gz /usr/local/ #複製解壓 RUN apt-get update --fix-missing && apt-get install -y vim --fix-missing ENV MYPATH /usr/local #設定環境變數 WORKDIR $MYPATH #設定工作目錄 ENV JAVA_HOME /usr/local/jdk1.8.0_311 #設定環境變數 ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar #設定環境變數 分隔符是: ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.56-src #設定環境變數 ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.56-src #設定環境變數 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin EXPOSE 8080 #設定暴露的埠 CMD /usr/local/apache-tomcat-9.0.56/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.56//bin/logs/catalina.out # 設定預設命令
注意 這裡的Dockerfile中不能進行註釋否則編譯會出錯
3. 編譯
docker build -t diytomcat:1.0 .
安裝完成後即可看到生成的映象
- 問題
解決辦法
# 原始命令
RUN apt-get install -y vim
# 修改方法
RUN sed -i 's#http://archive.ubuntu.com/#http://mirrors.tuna.tsinghua.edu.cn/#' /etc/apt/sources.list;
RUN apt-get update && apt-get install -y vim
#或者這個都可以
RUN apt-get update --fix-missing && apt-get install -y vim --fix-missing
五、執行測試
- 啟動Tomcat
docker run -d -p 8088:8080 --name diytomcat -v /home/tomcat/test:/usr/local/apache-tomcat-9.0.56/webapps/test -v /home/tomcat/tomcatlog/:/usr/local/apache-tomcat-9.0.56/logs/ diytomcat:1.0
-
測試是否啟動成功
-
進入容器,檢視設定是否成功
-
釋出自己的應用
- 編寫hello.html檔案
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
</head>
<body>
<h1>我的第一個標題</h1>
<p>我的第一個段落。</p>
</body>
</html>
- 將檔案放在webapps/test中
- 開啟瀏覽器訪問http://192.168.2.239:8088/test/hello.html
參考文獻
Docker:https://www.cnblogs.com/j-chao/p/13212436.html
Docker Dockerfile:https://www.runoob.com/docker/docker-dockerfile.html
Docker build出現“The command :https://blog.csdn.net/weixin_41693877/article/details/108504527
Docker製作Tomcat映象:https://blog.csdn.net/weixin_43397326/article/details/83306562