Docker(三)——Dockerfile自定義映象
映象結構
常見的映象在DockerHub就能找到,但是我們自己寫的專案就必須自己構建映象了。
而要自定義映象,就必須先了解映象的結構才行。
映象是將應用程式及其需要的系統函式庫、環境、配置、依賴打包而成。
我們以MySQL為例,來看看映象的組成結構:
簡單來說,映象就是在系統函式庫、執行環境基礎上,新增應用程式檔案、配置檔案、依賴檔案等組合,然後編寫好啟動指令碼打包在一起形成的檔案。
我們要構建映象,其實就是實現上述打包的過程。
Dockerfile語法
構建自定義的映象時,並不需要一個個檔案去拷貝,打包。
我們只需要告訴Docker,我們的映象的組成,需要哪些BaseImage、需要拷貝什麼檔案、需要安裝什麼依賴、啟動指令碼是什麼,將來Docker會幫助我們構建映象。
而描述上述資訊的檔案就是Dockerfile檔案。
Dockerfile就是一個文字檔案,其中包含一個個的指令(Instruction),用指令來說明要執行什麼操作來構建映象。每一個指令都會形成一層Layer。
更新詳細語法說明,請參考官網文件: https://docs.docker.com/engine/reference/builder
構建Java專案
1).基於Ubuntu構建Java專案
需求:基於Ubuntu映象構建一個新映象,執行一個java專案
資料下載:課前資料
- 步驟1:新建一個空資料夾docker-demo
-
步驟2:拷貝課前資料中的docker-demo.jar檔案到docker-demo這個目錄
-
步驟3:拷貝課前資料中的jdk8.tar.gz檔案到docker-demo這個目錄
-
步驟4:拷貝課前資料提供的Dockerfile到docker-demo這個目錄
其中的內容如下:
# 指定基礎映象 FROM ubuntu:16.04 # 配置環境變數,JDK的安裝目錄 ENV JAVA_DIR=/usr/local # 拷貝jdk和java專案的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo.jar /tmp/app.jar # 安裝JDK 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 # 暴露埠 EXPOSE 8090 # 入口,java專案的啟動命令 ENTRYPOINT java -jar /tmp/app.jar
-
步驟5:進入docker-demo
將準備好的docker-demo上傳到虛擬機器任意目錄,然後進入docker-demo目錄下 -
步驟6:執行命令:
docker build -t javaweb:1.0 .
最後訪問 http://192.168.150.101:8090/hello/count,其中的ip改成你的虛擬機器ip