docker之通过Dockerfile制作jdk镜像

Posted by 冷眼樵夫 on 01-16,2023

docker简介

首先我们需要通过下图了解一下docker、容器、和镜像的关系。
file
三者的关系就是 Dockerfile构建镜像,然后运行镜像启动容器。

Dockerfile基本结构

Dockerfile 由一行行命令语句组成,并支持以 # 开头的注释行。
主体内容分为四部分:
基础镜像信息、 维护者信息、 镜像操作指令和容器启动时执行指令。

#0.vi Dockerfile进入编辑模式

#1.指定基础镜像,并且必须是第一条指令 ----基础镜像信息
FROM centos:latest

#2.指明该镜像的作者和其电子邮件 ---- 维护者信息
MAINTAINER zs "zs@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录 ---- 镜像操作指令1
WORKDIR /usr/local/java

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD ... ,注意:jdk*.tar.gz使用的是相对路径 ---- 镜像操作指令2
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/

#5.配置环境变量 ---- 镜像操作指令3
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

#容器启动时需要执行的命令

#CMD ["java","-version"]

Dockerfile参数详解:https://docs.docker.com/engine/reference/builder/

这是Docker官网:https://docs.docker.com/

我们在Docker中下载镜像就是在这里下载,然而这些镜像也是大神用Dockerfile写出来的,所以今天我们也要使用Docker来自定义一个jdk镜像,提供给自己用。

Dockerfile制作jdk镜像

    像以前的话,我们直接下载一个jdk镜像或者搞个jdk压缩包。然后把它放进centos中,解压不,然后去找etc下的profile文件,在里面添加你存放jdk的地址。
    然后java -version测试。
    现在我们自己用Docker制作来制作JDK镜像

编写Dockerfile

创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
执行vi Dockerfile 把下面的内容放进Dockerfile文件中:

#1.指定基础镜像,并且必须是第一条指令
FROM centos:latest

#2.指明该镜像的作者和其电子邮件
MAINTAINER zs "zs@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /usr/local/java

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD ... ,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u221-linux-x64.tar.gz /usr/local/java/

#5.配置环境变量
ENV JAVA_HOME=/usr/local/java/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH

#容器启动时需要执行的命令

#CMD ["java","-version"]

执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像。

docker build -t jdk8:v1.0 .
注1:-t jdk8:v1.0 给新构建的镜像取名为 jdk8, 并设定版本为 v1.0
注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建

查看镜像

docker images

创建并启动容器

docker run -it jdk8:v1.0 /bin/bash

检查是否有问题

javac
java -version


0评论