1. 程式人生 > 其它 >Docker 之 Dockerfile

Docker 之 Dockerfile

Dockerfile 是一個用來構建映象的文字檔案,文字內容包含了一條條構建映象所需的指令和說明。

一、官方映象

學習docker映象的製作之前,先去看看官方的映象是怎麼製作的,檢視官方dockerfile的方式如下所示

  1. 進入官方映象倉庫,搜尋映象,如下圖所示

  2. 找到映象後,檢視的相應的版本資訊並進入到github

  3. 進入github後,即可看到官方的Dockerfile,通過Dockerfile檔案後,可以清晰的看到映象的製作過程

二、Dockerfile構建過程

  1. 基礎知識:
  • 每個關鍵字(指令)都必須是大寫字母
  • 執行流程是從上到下順序執行
  • "#" 表示註釋
  • 每一個指令都會建立提交一個新的映象層,並提交
  1. 步驟
  • 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映象進行測試

  1. 準備映象檔案,這裡需要Tomcat和jdk的壓縮包
  • Tomcat下載,首先進入Tomcat官網,找到自己需要的安裝包進行下載,如下圖所示

  • jdk下載,首先進入jdk官網,找到自己需要的安裝包進行下載,如下圖所示

  • 將壓縮包拷貝到linu系統下

  1. 編寫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 .


安裝完成後即可看到生成的映象

  1. 問題

    解決辦法
# 原始命令
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

五、執行測試

  1. 啟動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
  1. 測試是否啟動成功

  2. 進入容器,檢視設定是否成功

  3. 釋出自己的應用

  • 編寫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

如本部落格的內容侵犯了你的權益,請與以下地址聯絡,本人獲知後,馬上刪除。同時本人深表歉意,並致以崇高的謝意! [email protected]