一、环境准备

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)基础

每一条保留字指令都必须为大写字母且后面要跟随至少一个参数
注释用#
每一条指令都会创建一个新的镜像层,并对镜像进行提交

(2)Docker执行DockerFile的大致流程

  • docker从基础镜像运行一个容器
  • 执行一条指令并对容器作出修改
  • 执行类似docker commit的操作提交一个新的镜像层
  • docker再基于刚提交的镜像运行一个新容器
  • 执行dockerfile中的下一条指令直到所有指令都执行完成

(3)DockerFile的保留字指令

  1. FROM:基础镜像,当前新的镜像是基于哪一个镜像的
  2. MAINTAINER:镜像的作者和作者的邮箱
  3. RUN:容器构建的时候需要运行的命令
  4. EXPOSE:当前容器对外暴露的端口
  5. WORKDIR:登录到容器后进入的目录
  6. ENV:用来在构建镜像的过程中设置环境变量
  7. ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
  8. COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
  9. VOLUME:容器数据卷,用于数据保存和持久化工作
  10. CMD:指定一个容器启动的时候要运行的命令,可以有多个但是只有最后一个生效
  11. ENTRYPOINT:指定一个容器启动的时候要运行的命令,和CMD一样都是指定容器启动程序及参数,只追加不会替换
  12. ONBUILD:当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

四、jdk8压缩包传送门

jdk8压缩包下载
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐