Docker學習三:Dockerfile

摘自B站UP主狂神的學習筆記,歡迎大家去看原視頻學習:BV1og4y1q7M4

DockerFIle

dockerfile用來構建docker鏡像的文件!命令參數腳本

構建步驟:

  1. 編寫一個dockerfile文件
  2. docker build 構建一個鏡像
  3. docker run運行鏡像
  4. docker push 發佈鏡像

image-20200524184455841

很多官方的鏡像都是基礎包,很多功能都沒有。通常會自己搭建鏡像

DockerFile的腳本構建

基礎知識:

1、每個保留字都必須是大寫字母

1、每個保留字都是大寫

2、執行從上到下順序執行

3、# 表示註釋

4、每一個指令都會創建提交一個新的鏡像層,並提交

image-20200524184921514

dockerfile是面向開發的,以後要發佈項目,做鏡像,就需要編寫dockerfile文件。

Docker鏡像逐漸成爲企業交付的標準

名稱 作用
DockerFile 構建文件,定義了一切的步驟
DockerImages 通過DockerFile構建生成的鏡像,最終發佈和運行的產品
Docker容器 容器就是鏡像運行起來提供服務器

DockerFile指令

image-20200524185946876

FROM # 基礎鏡像,一切從這裏開始構建 
MAINTAINER   # 鏡像是誰寫的 姓名+郵箱
RUN   # 鏡像構建的時候需要運行的命令
ADD   # 步驟:tomcat鏡像,這個tomcat的壓縮包,就是要添加的內容
WORKDIR     # 鏡像的工作目錄
VOLUME    # 容器的掛載目錄
EXPOSE    # 指定對外的端口配置
CMD       # 指定這個容器啓動的時候要運行的命令。只有最後一個會生效,可被替代
ENTRYPOINT #  指定這個容器啓動的時候要運行的命令。可以追加命令
ONBUILD    # 當構建一個被繼承 DockerFile這個時候就會運行ONBUILD指令。觸發指令
COPY       # 類似ADD,將我們文件拷貝到鏡像中
ENV       # 構建的時候設置環境變量

配置實戰

先從FROM scratch開始

編寫一個自己的centos

root@dennis-1:/home/dockerfile# vim mydockerfile-centos
root@dennis-1:/home/dockerfile# cat mydockerfile-centos 
FROM centosr
MAINTAINER dennis<[email protected]>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "------end-------"
CMD /bin/bash

# 通過這個文件構建鏡像
docker build -f mydockerfile-centos -t mycentos:0.1 .
# build --構建鏡像
# -f 指定構建的文件名
# -t 指定生成的鏡像名
# 最後有一個點 .

我們還可以通過docker history [容器ID]來查看一個容器的構建歷史:image-20200524192539074

CMD 和 ENTRYPOINT的區別

  • 測試cmd

image-20200524192804594

如果想要追加一個命令 -l --> ls -al

cmd的情況下會報錯。

  • 測試ENTRYPOINT

image-20200524193502674

這一次在構建完畢後,在末尾執行了一個-l,被加到了前面,形成了“ls -la”

編寫一個Tomcat

  1. 準備鏡像文件,tomcat和jdk的tar.gz壓縮包

  2. 編寫dockerfile文件名,官方命名 Dockerfile,build會自動尋找這個文件,就不需要-f指定

FROM centos
MAINTAINER dennis<[email protected]>

# 添加的tar會自動解壓到指定的目錄下
ADD jdk-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.35.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_131
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.35
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.35/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.35/catalina.out
  1. 構建自己的鏡像

  2. 啓動鏡像

  3. 訪問測試

  4. 發佈項目

發佈鏡像

  1. 登錄鏡像網址

     docker login [opetions] [server]
    # -p --password
    # -u --username
    
  2. 登錄完成過後,發佈鏡像

docker push dennis/diytomcat:1.0

image-20200524201501897

直接上傳鏡像一般會被拒絕,需要加上作者信息,版本信息 – 通過docker tag添加

# 自己發佈的鏡像,儘量要帶版本號
docker tag 187a2cd663cf dennis/diytomcat:1.0

發佈到阿里雲鏡像服務上

– 沒有買,暫時空着

小結

Docker的執行流程:

image-20200524202937874

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章