docker简介
首先我们需要通过下图了解一下docker、容器、和镜像的关系。
三者的关系就是 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