一、环境准备
arm64/aarch64的云服务器、已经安装好docker、已经安装好对应版本且可以使用的jdk、服务器上有该jdk的安装包
(如:jdk-8u311-linux-aarch64.tar.gz)
二、自定义java镜像
1.创建文件夹,上传指定jdk,编写Dockerfile文件
#创建一个文件夹放**Dockerfile和指定jdk
mkdir -p /home/docker/java
#切换到该路径
cd /home/docker/java
#创建一个Dockerfile文件
vi Dockerfile
#依赖的环境
FROM centos:7
#作者
MAINTAINER shiwei
#ADD 把java添加到容器中指定位置
ADD jdk-8u311-linux-aarch64.tar.gz /usr/docker/java
#环境配置
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.使用镜像创建容器,测试镜像是否正常
#创建容器并进入
docker run -it --name java-jdk-demo java:1.8 /bin/bash
# -it 终端交互式操作
# --name 给容器命名
# /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell
#然后输入 java -version 出现java版本说明容器没有问题
#退出容器
exit
三、Dockerfile参数介绍
1.为什么将压缩包放入容器后会自动解压
Dockerfile的命令ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
2.Dockerfile参数介绍
(1)基础
每一条保留字指令都必须为大写字母且后面要跟随至少一个参数
注释用#
每一条指令都会创建一个新的镜像层,并对镜像进行提交文章来源:https://www.toymoban.com/news/detail-490594.html
(2)Docker执行DockerFile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令并对容器作出修改
- 执行类似docker commit的操作提交一个新的镜像层
- docker再基于刚提交的镜像运行一个新容器
- 执行dockerfile中的下一条指令直到所有指令都执行完成
(3)DockerFile的保留字指令
- FROM:基础镜像,当前新的镜像是基于哪一个镜像的
- MAINTAINER:镜像的作者和作者的邮箱
- RUN:容器构建的时候需要运行的命令
- EXPOSE:当前容器对外暴露的端口
- WORKDIR:登录到容器后进入的目录
- ENV:用来在构建镜像的过程中设置环境变量
- ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
- COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
- VOLUME:容器数据卷,用于数据保存和持久化工作
- CMD:指定一个容器启动的时候要运行的命令,可以有多个但是只有最后一个生效
- ENTRYPOINT:指定一个容器启动的时候要运行的命令,和CMD一样都是指定容器启动程序及参数,只追加不会替换
- ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
四、jdk8压缩包传送门
jdk8压缩包下载
文章来源地址https://www.toymoban.com/news/detail-490594.html
到了这里,关于Docker自定义java镜像(解决java:8镜像不支持arm64/aarch64的问题)(附带Dockerfile参数介绍)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!