Docker4️⃣自定義映象
阿新 • • 發佈:2022-06-01
1、映象結構
映象:應用程式及其所需函式庫、依賴、環境配置等檔案打包在一起形成的檔案包。
-
基礎映象:應用程式所需的系統函式庫、環境配置、檔案等。
-
層:映象中的每個步驟(新增安裝包、依賴等)都作為單獨的一層,以提高複用性。
-
入口:映象執行入口,一般是程式的啟動指令碼和引數。
2、Dockerfile(❗)
Dockerfile:描述性文字檔案
-
通過指令(Instruction),描述構建映象所要執行的操作。
-
每個指令都會形成一層 Layer。
-
參考官網文件
含義 說明 FROM 指定基礎映象 基礎映象可以是作業系統,或製作好的映象 ENV 設定環境變數 COPY 將本地檔案拷貝到映象的指定目錄 RUN 執行 Linux 的 shell 命令 通常用於安裝操作 EXPOSE 暴露埠 指定容器執行時的監聽埠 ENTRYPOINT 入口點 映象中應用的啟動命令,執行容器時呼叫
3、構建映象
3.1、步驟
- 新建空資料夾,用於構建映象。
- 依賴檔案(如安裝包,專案 jar 包)
- Dockerfile
- 將資料夾上傳到伺服器(或直接在伺服器中進行以上操作)
- Docker build
3.2、case:構建 Java 專案
3.2.1、基於 CentOS
-
在伺服器新建空資料夾,用於構建映象。
-
相關檔案:
- JDK 安裝包(
.tar.gz
- 專案 jar 包(任意能正常訪問的 web 專案)
- JDK 安裝包(
-
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
-
-
構建映象:在
docker-demo
目錄下執行命令# -t 映象名 dockerfile位置 docker build -t myweb:1.0 .
-
檢視映象:構建時會自動下載基礎映象(CentOS),成功構建自定義映象
3.2.2、基於 alpine
示例:基於
java:8-alpine
映象,將 Java 專案構建為映象。
-
在伺服器新建空資料夾
-
只需匯入專案 jar 包,無需匯入 JDK 安裝包。
-
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 中指定的基礎映象。
- 其餘內容和後續操作步驟相同。