自定义镜像-Dockerfile
Dockerfile語法
構建自定義的鏡像時,并不需要一個個文件去拷貝,打包。
我們只需要告訴Docker,我們的鏡像的組成,需要哪些BaseImage、需要拷貝什么文件、需要安裝什么依賴、啟動腳本是什么,將來Docker會幫助我們構建鏡像。
而描述上述信息的文件就是Dockerfile文件。
Dockerfile就是一個文本文件,其中包含一個個的指令(Instruction),用指令來說明要執行什么操作來構建鏡像。每一個指令都會形成一層Layer。
更新詳細語法說明,請參考官網文檔: Dockerfile reference | Docker Documentation
基于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:運行命令:
最后訪問 http://192.168.150.101:8090/hello/count,其中的ip改成你的虛擬機ip
基于java8構建Java項目
雖然我們可以基于Ubuntu基礎鏡像,添加任意自己需要的安裝包,構建鏡像,但是卻比較麻煩。所以大多數情況下,我們都可以在一些安裝了部分軟件的基礎鏡像上做改造。
例如,構建java項目的鏡像,可以在已經準備了JDK的基礎鏡像基礎上構建。
需求:基于java:8-alpine鏡像,將一個Java項目構建為鏡像
實現思路如下:
-
① 新建一個空的目錄,然后在目錄中新建一個文件,命名為Dockerfile
-
② 拷貝課前資料提供的docker-demo.jar到這個目錄中
-
③ 編寫Dockerfile文件:
-
a )基于java:8-alpine作為基礎鏡像
-
b )將app.jar拷貝到鏡像中
-
c )暴露端口
-
d )編寫入口ENTRYPOINT
內容如下:
-
-
④ 使用docker build命令構建鏡像
-
⑤ 使用docker run創建容器并運行
小結
小結:
Dockerfile的本質是一個文件,通過指令描述鏡像的構建過程
Dockerfile的第一行必須是FROM,從一個基礎鏡像來構建
基礎鏡像可以是基本操作系統,如Ubuntu。也可以是其他人制作好的鏡像,例如:java:8-alpine
總結
以上是生活随笔為你收集整理的自定义镜像-Dockerfile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义镜像-镜像结构
- 下一篇: DockerCompose-初始Comp