Docker容器——创建一个自定义jdk1.8镜像

Docker容器——创建一个自定义jdk1.8镜像

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:Ubuntu
  • 工具:docker

内容

废话不多说直接进入主题:

1、在宿主机中创建我们本次使用的目录,并进入其中

mkdir dockerfile_create && cd dockerfile_create/
mkdir docker_jdk && cd docker_jdk/

2、进行下载jdk1.8,存放到我们刚才创建好的docker_jdk目录下,同时在该路径下开始第三步。

访问https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html进行下载,这里需要具有oracle的账号,可以直接注册一个,或者使用如下地址下载
链接: https://pan.baidu.com/s/1n9ulyRlxVsVs4aOxoCIe-w 提取码: nsjw

3、进行编写Dockerfile

vim Dockerfile

文件内容如下

# 基础镜像文件
FROM centos:latest

# 本次镜像创建人
MAINTAINER cnhuashao

# 进入工作目录
WORKDIR /opt

# 创建一个我们需要的目录
RUN mkdir /opt/java

# 将我们准备好的软件包放到刚创建的文件夹中
ADD jdk-8u202-linux-x64.tar.gz /opt/java/
 
# 设置环境变量
ENV JAVA_HOME /opt/java/jdk1.8.0_202
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

注意上面的Dockerfile是固定名称,不能随意修改。否则就会报这个错误了

unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/cnhuashao/dockerfile_create/docker_jdk/Dockerfile: no such file or directory

4、基于上面的文件开始编译

docker build -t='centos_jdk' .

注意命令后面的[.],表示当前目录下寻找,-t是指定一个镜像名字,可以省略

cnhuashao@cnhuashao:~/dockerfile_create/docker_jdk$ docker build -t='centos_jdk' .
Sending build context to Docker daemon    194MB
Step 1/9 : FROM centos:latest
 ---> 5d0da3dc9764
Step 2/9 : MAINTAINER cnhuashao
 ---> Running in 598c894822dd
Removing intermediate container 598c894822dd
 ---> 24bd4c5e0cb9
Step 3/9 : WORKDIR /opt
 ---> Running in 8ba6c094071a
Removing intermediate container 8ba6c094071a
 ---> 0627b2aa523e
Step 4/9 : RUN mkdir /opt/java
 ---> Running in e26cd5ab1936
Removing intermediate container e26cd5ab1936
 ---> 55f75b7c63c8
Step 5/9 : ADD jdk-8u202-linux-x64.tar.gz /opt/java/
 ---> f4de75816469
Step 6/9 : ENV JAVA_HOME /opt/java/jdk1.8.0_202
 ---> Running in bfe5b73e056f
Removing intermediate container bfe5b73e056f
 ---> ef7bc968af7d
Step 7/9 : ENV JRE_HOME $JAVA_HOME/jre
 ---> Running in 289ec0ed9b4c
Removing intermediate container 289ec0ed9b4c
 ---> e338d2e42572
Step 8/9 : ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
 ---> Running in c31b1a27d5c9
Removing intermediate container c31b1a27d5c9
 ---> a38976712316
Step 9/9 : ENV PATH $JAVA_HOME/bin:$PATH
 ---> Running in fd49d2cb3ae3
Removing intermediate container fd49d2cb3ae3
 ---> c62ad4394489
Successfully built c62ad4394489
Successfully tagged centos_jdk:latest

我们的镜像中使用了centos,当本地没有时将会自动根据预配置(默认配置)的远程仓库拉取。而我们在Dockerfile中使用的jdk包在编译过程中将自动被解压到指定目录下。

5、创建一个容器并进入测试

cnhuashao@cnhuashao:~/dockerfile_create/docker_jdk$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos_jdk   latest    c62ad4394489   2 minutes ago   634MB
cnhuashao@cnhuashao:~/dockerfile_create/docker_jdk$ docker run -it centos_jdk /bin/bash
[root@f7565c0dcf12 opt]# java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

OK至此我们的本地镜像创建完毕,下一篇我们将讲述如何将其放到我们自己的docker hub账号下。欢迎持续关注

本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

你可能感兴趣的:(java,docker,linux,centos,大数据)