Loading

使用Dockerfile创建基础JDK容器

JDK容器作为一种基础容器,网上有很多的镜像,可供大家直接下载使用。但是自己制作镜像也有很多的意义,比如学习,制作特定架构的镜像,添加个性化配置等。本教程就是通过Dokcerfile文件制作自己的JDK镜像

准备环节

  1. 需要准备JDK安装包,可以从此站点进行下载 华为下载源

  2. 创建 jdk-8 文件夹,将下载的 JDK 安装包放置在这个文件夹下,并创建 Dockerfile 文件

    $ ls
    Dockerfile                            jdk-8u201-linux-arm64-vfp-hflt.tar.gz
    $ pwd
    /Users/linchangkun/workspace/docker/jdk-8
    

    这是我准备的环境,因为我使用是 arm 架构的 mac,所以我下载的 jdk 是 arm64 版本的,一般大家的服务器或者电脑,一般是下载 jdk-8u201-linux-x64.tar.gz

编写 Dockerfile

  • 请注意下述的注释部分

    # 基础镜像使用 debian, stable-slim 是指稳定版精简包
    FROM debian:stable-slim
    # 描写维护者信息
    MAINTAINER linck zerolinck@foxmail.com
    
    # 设置工作目录
    WORKDIR /
    
    # 将jdk安装包复制到 /usr/local/jdk 目录下,ADD 命令会自动解压
    ADD jdk-8u201-linux-arm64-vfp-hflt.tar.gz /usr/local/jdk/
    
    # ENV 配置环境变量,下面就是大家熟悉的 JAVA_HOME、CLASS_PATH、PATH
    
    # !!!!!
    # !!!!! 这里注意,这里写了 jdk1.8.0_201,是因为我的jdk安装包解压是叫这个名字,大家自己准备的jdk安装包解压名字不一样的,需要换掉
    
    ENV JAVA_HOME=/usr/local/jdk/jdk1.8.0_201
    ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH=$JAVA_HOME/bin:$PATH
    

制作镜像

  • 使用 docker build 创建镜像,-t 后面跟着的是 镜像名:版本,最后的点是指当前目录,比如Dockerfile中的add命令,复制jdk安装包到镜像中,就是复制当前目录的jdk安装包

    $ docker build -t lin-jdk-8:1.0 .
    [+] Building 17.5s (7/7) FINISHED
     => [internal] load build definition from Dockerfile 0.1s
     => => transferring dockerfile: 313B 0.0s
     => [internal] load .dockerignore 0.0s
     => => transferring context: 2B 0.0s
     => [internal] load metadata for docker.io/library/debian:stable-slim 15.4s
     => [internal] load build context 2.0s
     => => transferring context: 73.33MB 2.0s
     => [1/3] FROM docker.io/library/debian:stable-slim@sha256:608a500bd0d397338ec0e8579649985fb2  0.0s
     => CACHED [2/3] ADD jdk-8u201-linux-arm64-vfp-hflt.tar.gz /usr/local/jdk/ 0.0s
     => exporting to image 0.0s
     => => exporting layers 0.0s
     => => writing image sha256:3832427f0da8e7bbedff8f491952d1ace01560fc7cbd579ab27249b822172eda 0.0s
     => => naming to docker.io/library/lin-jdk-8:1.0 0.0s
    
    Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
    

    开始 build,如果你的本地没有 debian:stable-slim 这个基础镜像,那么会先联网下载,如果你的网络不太好,可能会需要下载挺久。

查看运行镜像

  • 到这镜像就已经制作完成了,可以查看并用于创建容器

    # 可以看到我们自己制作的镜像
    $ docker images
    lin-jdk-8               1.0           3832427f0da8   8 days ago      242MB
    
    # 使用镜像创建容器
    $ docker run -it --name lin-jdk-01 lin-jdk-8:1.0 bash
    root@2e22ae0ee798:/#
    
    # 查看复制进来的 jdk,看到是被自动解压的了
    root@2e22ae0ee798:/usr/local/jdk# ls
    jdk1.8.0_201
    
    # 输出环境变量,就是 Dockerfile 中 ENV 描述的部分
    root@2e22ae0ee798:/usr/local/jdk# echo $JAVA_HOME
    /usr/local/jdk/jdk1.8.0_201
    
    root@2e22ae0ee798:/usr/local/jdk# echo $CLASSPATH
    .:/usr/local/jdk/jdk1.8.0_201/lib/dt.jar:/usr/local/jdk/jdk1.8.0_201/lib/tools.jar
    
    root@2e22ae0ee798:/usr/local/jdk# echo $PATH
    /usr/local/jdk/jdk1.8.0_201/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    
posted @ 2022-01-14 16:38  zerolinck  阅读(966)  评论(0编辑  收藏  举报