1. 程式人生 > 其它 >Docker4️⃣自定義映象

Docker4️⃣自定義映象

1、映象結構

映象:應用程式及其所需函式庫、依賴、環境配置等檔案打包在一起形成的檔案包。

  • 基礎映象:應用程式所需的系統函式庫、環境配置、檔案等。

  • :映象中的每個步驟(新增安裝包、依賴等)都作為單獨的一層,以提高複用性。

  • 入口:映象執行入口,一般是程式的啟動指令碼和引數。

2、Dockerfile(❗)

Dockerfile:描述性文字檔案

  • 通過指令(Instruction),描述構建映象所要執行的操作。

  • 每個指令都會形成一層 Layer。

  • 參考官網文件

    含義 說明
    FROM 指定基礎映象 基礎映象可以是作業系統,或製作好的映象
    ENV 設定環境變數
    COPY 將本地檔案拷貝到映象的指定目錄
    RUN 執行 Linux 的 shell 命令 通常用於安裝操作
    EXPOSE 暴露埠 指定容器執行時的監聽埠
    ENTRYPOINT 入口點 映象中應用的啟動命令,執行容器時呼叫

3、構建映象

3.1、步驟

  1. 新建空資料夾,用於構建映象。
    • 依賴檔案(如安裝包,專案 jar 包)
    • Dockerfile
  2. 將資料夾上傳到伺服器(或直接在伺服器中進行以上操作)
  3. Docker build

3.2、case:構建 Java 專案

3.2.1、基於 CentOS

  1. 在伺服器新建空資料夾,用於構建映象。

    • 相關檔案

      • JDK 安裝包(.tar.gz
      • 專案 jar 包(任意能正常訪問的 web 專案)
    • Dockerfile:安裝 JDK,匯入 Java 專案,暴露埠,入口點

      # 基礎映象
      FROM centos:7
      # 安裝JDK
      # 安裝目錄
      ENV JAVA_DIR=/usr/local
      # 拷貝安裝包
      COPY ./jdk8.tar.gz $JAVA_DIR/
      # 安裝
      RUN cd $JAVA_DIR \
       && tar -xf ./jdk8.tar.gz \
       && mv ./jdk1.8.0_144 ./java8
      # 環境變數
      ENV JAVA_HOME=$JAVA_DIR/java8
      ENV PATH=$PATH:$JAVA_HOME/bin
      
      # Java專案
      COPY ./docker-demo.jar /tmp/app.jar
      # 暴露埠:web專案中配置的訪問埠
      EXPOSE 8090
      # 入口,java專案的啟動命令
      ENTRYPOINT java -jar /tmp/app.jar
      
  2. 構建映象:在 docker-demo 目錄下執行命令

    # -t 映象名 dockerfile位置
    docker build -t myweb:1.0 .
    
  3. 檢視映象:構建時會自動下載基礎映象(CentOS),成功構建自定義映象

3.2.2、基於 alpine

示例:基於 java:8-alpine 映象,將 Java 專案構建為映象。

  1. 在伺服器新建空資料夾

  2. 只需匯入專案 jar 包,無需匯入 JDK 安裝包。

  3. Dockerfile:指定基礎映象即可安裝 JDK

    FROM java:8-alpine
    COPY ./app.jar /tmp/app.jar
    EXPOSE 8090
    ENTRYPOINT java -jar /tmp/app.jar
    

3.2.3、說明

  • 以上 2 個案例,區別在於 dockerfile 中指定的基礎映象。
  • 其餘內容和後續操作步驟相同。