目录
1.下载JDK以JDK15.0.2为例
// 官网国内下载慢参考下面博客
https://blog.youkuaiyun.com/fantasmic/article/details/128641856?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-128641856-blog-113915889.pc_relevant_landingrelevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-3-128641856-blog-113915889.pc_relevant_landingrelevant&utm_relevant_index=6
# 下载jdk
http://www.codebaoku.com/jdk/jdk-oracle-jdk15.html
# 网盘下载
链接:https://pan.baidu.com/s/10K4RjSCbI882PNQn7LOykQ
提取码:4545
# 创建镜像操作目录
mkdir -p /docker-image/jdk && cd /docker-image/jdk
# 上传jdk压缩包 没有命令执行 yum -y install lrzsz,或者其他形式上传
rz
root@localhost jdk]# ls
jdk-15.0.2_linux-x64_bin.tar.gz
2.编写 Dockerfile 文件
# 编写 Dockerfile 文件
touch Dockerfile
vi Dockerfile
#1.指定基础镜像,并且必须是第一条指令
FROM centos:7
#2.指明该镜像的作者和其电子邮件
MAINTAINER zs "1196869282@qq.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /docker-image/jdk
#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-15.0.2_linux-x64_bin.tar.gz /docker-image/jdk
#5.配置环境变量 jdk-15.0.2 压缩包解压后的路径
ENV JAVA_HOME=/docker-image/jdk/jdk-15.0.2
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
#容器启动时需要执行的命令
#CMD ["java","-version"]
3.创建并启动容器
# 执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像
# -t jdk:15.0.2 给新构建的镜像取名为 jdk, 并设定版本为 15.0.2
# 注意最后有个点,代表使用当前路径的 Dockerfile 进行构建
docker build -t jdk:15.0.2 .
# 创建并且启动容器
docker run -it jdk:15.0.2 /bin/bash
# -----
[root@7d8af34a897f jdk]# java -version
java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)
# 退出容器
[root@7d8af34a897f jdk]# exit
4.java -version异常
bash: java: command not found
进入 容器进入到/docker-image/jdk
查看java目录名,修改环境变量名称即可,删除容器镜像重新创建启动下面命令即可docker build -t jdk:15.0.2 .
5.保存镜像
# 查看容器id
[root@localhost jdk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk 15.0.2 7aa18b6a6de2 3 minutes ago 533 MB
# docker save 命令根据 ID 将镜像保存成一个文件
[root@localhost jdk]# docker save 7aa18b6a6de2 > jdk-15.0.2.tar jdk:15.0.2
[root@localhost jdk]# ls
Dockerfile jdk-15.0.2_linux-x64_bin.tar.gz jdk-15.0.2.tar
[root@localhost jdk]#
6.加载镜像
# 删除原来镜像
[root@localhost jdk]# docker rmi 7aa18b6a6de2
# 加载镜像
docker load < jdk-15.0.2.tar
3d1178db94c1: Loading layer [==================================================>] 2.56 kB/2.56 kB
444f6074ec26: Loading layer [==================================================>] 329.3 MB/329.3 MB
Loaded image: jdk:15.0.2
# 查看镜像
[root@localhost jdk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk 15.0.2 d4ba100d4b44 About a minute ago 533 MB
docker.io/minio/minio latest e31e0721a96b 14 months ago 406 MB
docker.io/centos 7 eeb6ee3f44bd 18 months ago 204 MB
docker.io/mysql 8.0.23 cbe8815cbea8 23 months ago 546 MB
[root@localhost jdk]# docker run -it jdk:15.0.2 /bin/bash
[root@c43c77dbba04 jdk]# java -version
java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)
[root@c43c77dbba04 jdk]# exit
exit