Docker使用Dockerfile自定義鏡像方式
什么是Dockerfile
Dockerfile就是一個(gè)文本文件,其中包含一個(gè)個(gè)的指令(Instruction),用指令來說明要執(zhí)行什么操作來構(gòu)建鏡像。
每一個(gè)指令都會形成一層Layer。
常見指令
注意:第一行必須是 FROM 指令才行

看實(shí)例
需求:
基于Ubuntu鏡像構(gòu)建一個(gè)新鏡像,運(yùn)行一個(gè)java項(xiàng)目
1.下載資料
將本文最上面的資源下載到本地

2.查看Dockerfile
等會我們直接使用這個(gè)文件就可以依次執(zhí)行這些指令幫助我們構(gòu)建好自己的鏡像(每個(gè)指令都會分一層)
# 指定基礎(chǔ)鏡像 FROM ubuntu:16.04 # 配置環(huán)境變量,JDK的安裝目錄 ENV JAVA_DIR=/usr/local # 拷貝jdk和java項(xiàng)目的包 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 # 配置環(huán)境變量 ENV JAVA_HOME=$JAVA_DIR/java8 ENV PATH=$PATH:$JAVA_HOME/bin # 暴露端口 EXPOSE 8090 # 入口,java項(xiàng)目的啟動命令 ENTRYPOINT java -jar /tmp/app.jar
3.新建目錄
mkdir docker-demo cd docker-demo

4.上傳資料
直接借助 FinalShell 拖動上傳即可:

5.構(gòu)建鏡像
docker build -t javaweb:1.0 .
最后空格后面要加一個(gè)點(diǎn),代表的是Dockerfile所在的目錄(也就是我們現(xiàn)在所在的 docker-demo 目錄)

可以看到鏡像構(gòu)建完成了

6.啟動容器
docker run --name my-javaweb -p 8090:8090 -d javaweb:1.0
啟動成功

7.瀏覽器訪問
http://自己的服務(wù)器地址:8090/hello/count

四、實(shí)例升級
1.為什么升級
其實(shí)之前的實(shí)例中我們的 Dockerfile 還可以簡化一些不需要我們寫的東西,當(dāng)然并不是不用寫了,而是別人幫我們寫好了

2.如何升級
Ⅰ.更改 Dockerfile
我們可以直接基于已經(jīng)安裝好 jdk 的鏡像 openjdk:8-alpine 來構(gòu)建我們的鏡像,只需要將 Dockerfile 更改為如下:
# 指定基礎(chǔ)鏡像 FROM openjdk:8-alpine COPY ./docker-demo.jar /tmp/app.jar # 暴露端口 EXPOSE 8090 # 入口,java項(xiàng)目的啟動命令 ENTRYPOINT java -jar /tmp/app.jar
Ⅱ.構(gòu)建鏡像并運(yùn)行容器
docker build -t javaweb:2.0 . # 構(gòu)建鏡像 docker run --name my-javaweb-2.0 -p 8091:8090 -d javaweb:2.0 # 啟動容器

3.再次測試
http://自己的服務(wù)器地址:8091/hello/count

總結(jié)
1.Dockerfile的本質(zhì)是一個(gè)文件,通過指令描述鏡像的構(gòu)建過程
2.Dockerfile的第一行必須是FROM,從一個(gè)基礎(chǔ)鏡像來構(gòu)建
3.基礎(chǔ)鏡像可以是基本操作系統(tǒng),如Ubuntu。也可以是其他人制作好的鏡像,例如:java:8-alpine
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Idea連接數(shù)據(jù)庫并執(zhí)行SQL語句的方法示例
這篇文章主要介紹了Idea連接數(shù)據(jù)庫并執(zhí)行SQL語句的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Win10系統(tǒng)下配置Java環(huán)境變量
今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識,文章圍繞著Win10系統(tǒng)下配置Java環(huán)境變量展開,文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下2021-06-06
springboot中shiro使用自定義注解屏蔽接口鑒權(quán)實(shí)現(xiàn)
本文主要介紹了springboot中shiro使用自定義注解屏蔽接口鑒權(quán)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
Centos6.5下Jdk+Tomcat+Mysql環(huán)境安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了Centos6.5系統(tǒng)下Jdk+Tomcat+Mysql環(huán)境安裝過程,感興趣的小伙伴們可以參考一下2016-05-05
Java獲取接口的所有實(shí)現(xiàn)類方法總結(jié)示例
這篇文章主要給大家介紹了關(guān)于Java獲取接口的所有實(shí)現(xiàn)類方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-06-06
Java 獲取Html文本中的img標(biāo)簽下src中的內(nèi)容方法
今天小編就為大家分享一篇Java 獲取Html文本中的img標(biāo)簽下src中的內(nèi)容方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
Springboot自動裝配實(shí)現(xiàn)過程代碼實(shí)例
這篇文章主要介紹了Springboot自動裝配實(shí)現(xiàn)過程代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
SpringBoot中web模板渲染的實(shí)現(xiàn)
本文主要介紹了SpringBoot中web模板渲染的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

