制作带有JDK的centos容器镜像,在制作这个镜像的过程中,一定要注意下载适配当前镜像系统的JDK,包括架构以及系统,否则会出现制作成功,但是JDK无法启用的状况。
我的系统镜像是centos linux/arm64/v8,下载的JDK要适配这个系统镜像。
上传JDK
镜像下载完成后,通过xftp工具将jdk-8u281-linux-aarch64.tar.gz 传到指定目录 /usr/local/bdsoft
创建Dockerfile文件
切换到在 /usr/local/bdsoft 目录创建Dockerfile文件,一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。文件内容如下
- FROM:指定创建镜像的基础镜像
- MAINTAINER:Dockerfile作者信息,一般写的是联系方式
- RUN:运行Linux系统的命令使用
- CMD:指定容器启动执行的命令;启动容器中的服务
- LABEL:指定生成镜像的源数据标签
- EXPOSE:指定镜像容器监听端口号;发布服务使用
- ENV:使用环境变量
- ADD:对压缩文件进行解压缩;将数据移动到指定的目录
- COPY:复制宿主机数据到镜像内部使用
- WORKDIR:切换到镜像容器中的指定目录中
- VOLUME:挂载数据卷到镜像容器中
- USER:指定运行容器的用户
- ARG:指定镜像的版本号信息
- ONBUILD:创建镜像,作为其他镜像的基础镜像运行操作指令
- ENTRYPOINT:指定运行容器启动过程执行命令,覆盖CMD参数
本次制作带有JDK的镜像只用到了FROM 、MAINTAINER 、ADD 、ENV 命令
制作镜像
执行构建命令
docker build -t centos-jdk8 -f /usr/local/bdsoft/Dockerfile-JDK .
注意一定要带有最后面的,英式点 . ,不然会报错。
-f 显示指定构建镜像的 Dockerfile 文件(Dockerfile 可不在当前路径下)
如果不使用 -f,则默认将上下文路径下的名为 Dockerfile 的文件认为是构建镜像的 “Dockerfile”
此处还未研究透彻,只会一种方式,将基础镜像centos、jdk、dockerfile放在同一级目录下,且在制作镜像前切换到此目录下执行制作命令,不然在制作过程中会出错
制作成功后通过docker images
查看会有两个镜像
- 基础镜像 centos
- 带有jdk的镜像centos-jdk
接下来我们启动带有jdk的镜像系统centos-jdk8,并查看是否成功启动容器
启动镜像
docker run -itd --name centos-jdk8 centos-jdk8:latest
docker ps -a
进入容器
生成对应的容器centos-jdk8,并成功启动STATUS为Up,进入该容器
docker exec -it [CONTAINER ID] /bin/bash
查看java版本
进入容器后,运行命令java -version
查看java版本,判断镜像中是否成功安装了jdk
退出容器
exit
退出容器
退出容器后再次运行了java -version命令发现依旧可以执行。觉得有些奇怪,仔细观察后发现是服务器上已经安装的jdk,版本和容器的jdk版本不一致。
到此制作带有jdk的镜像系统完成。