一、環(huán)境準(zhǔn)備
arm64/aarch64的云服務(wù)器、已經(jīng)安裝好docker、已經(jīng)安裝好對應(yīng)版本且可以使用的jdk、服務(wù)器上有該jdk的安裝包
(如:jdk-8u311-linux-aarch64.tar.gz)
二、自定義java鏡像
1.創(chuàng)建文件夾,上傳指定jdk,編寫Dockerfile文件
#創(chuàng)建一個(gè)文件夾放**Dockerfile和指定jdk
mkdir -p /home/docker/java
#切換到該路徑
cd /home/docker/java
#創(chuàng)建一個(gè)Dockerfile文件
vi Dockerfile
#依賴的環(huán)境
FROM centos:7
#作者
MAINTAINER shiwei
#ADD 把java添加到容器中指定位置
ADD jdk-8u311-linux-aarch64.tar.gz /usr/docker/java
#環(huán)境配置
ENV JAVA_HOME /usr/docker/java/jdk1.8.0_311
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
ENV PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
2.打包鏡像
#打包鏡像 注意有后綴 .
docker build -t java:1.8 .
3.查看鏡像
docker images
4.使用鏡像創(chuàng)建容器,測試鏡像是否正常
#創(chuàng)建容器并進(jìn)入
docker run -it --name java-jdk-demo java:1.8 /bin/bash
# -it 終端交互式操作
# --name 給容器命名
# /bin/bash:放在鏡像名后的是命令,這里我們希望有個(gè)交互式 Shell
#然后輸入 java -version 出現(xiàn)java版本說明容器沒有問題
#退出容器
exit
三、Dockerfile參數(shù)介紹
1.為什么將壓縮包放入容器后會自動(dòng)解壓
Dockerfile的命令A(yù)DD:將宿主機(jī)目錄下的文件拷貝進(jìn)鏡像且ADD命令會自動(dòng)處理URL和解壓tar壓縮包
2.Dockerfile參數(shù)介紹
(1)基礎(chǔ)
每一條保留字指令都必須為大寫字母且后面要跟隨至少一個(gè)參數(shù)
注釋用#
每一條指令都會創(chuàng)建一個(gè)新的鏡像層,并對鏡像進(jìn)行提交文章來源:http://www.zghlxwxcb.cn/news/detail-490594.html
(2)Docker執(zhí)行DockerFile的大致流程
- docker從基礎(chǔ)鏡像運(yùn)行一個(gè)容器
- 執(zhí)行一條指令并對容器作出修改
- 執(zhí)行類似docker commit的操作提交一個(gè)新的鏡像層
- docker再基于剛提交的鏡像運(yùn)行一個(gè)新容器
- 執(zhí)行dockerfile中的下一條指令直到所有指令都執(zhí)行完成
(3)DockerFile的保留字指令
- FROM:基礎(chǔ)鏡像,當(dāng)前新的鏡像是基于哪一個(gè)鏡像的
- MAINTAINER:鏡像的作者和作者的郵箱
- RUN:容器構(gòu)建的時(shí)候需要運(yùn)行的命令
- EXPOSE:當(dāng)前容器對外暴露的端口
- WORKDIR:登錄到容器后進(jìn)入的目錄
- ENV:用來在構(gòu)建鏡像的過程中設(shè)置環(huán)境變量
- ADD:將宿主機(jī)目錄下的文件拷貝進(jìn)鏡像且ADD命令會自動(dòng)處理URL和解壓tar壓縮包
- COPY:類似ADD,拷貝文件和目錄到鏡像中。將從構(gòu)建上下文目錄中<源路徑>的文件/目錄復(fù)制到新的一層的鏡像內(nèi)的<目標(biāo)路徑>位置
- VOLUME:容器數(shù)據(jù)卷,用于數(shù)據(jù)保存和持久化工作
- CMD:指定一個(gè)容器啟動(dòng)的時(shí)候要運(yùn)行的命令,可以有多個(gè)但是只有最后一個(gè)生效
- ENTRYPOINT:指定一個(gè)容器啟動(dòng)的時(shí)候要運(yùn)行的命令,和CMD一樣都是指定容器啟動(dòng)程序及參數(shù),只追加不會替換
- ONBUILD:當(dāng)構(gòu)建一個(gè)被繼承的Dockerfile時(shí)運(yùn)行命令,父鏡像在被子繼承后父鏡像的onbuild被觸發(fā)
四、jdk8壓縮包傳送門
jdk8壓縮包下載文章來源地址http://www.zghlxwxcb.cn/news/detail-490594.html
到了這里,關(guān)于Docker自定義java鏡像(解決java:8鏡像不支持arm64/aarch64的問題)(附帶Dockerfile參數(shù)介紹)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!