docker创建jdk镜像

现在有需求要用docker跑java项目,而且有多个项目,所以我的思路是自己搭建一个基于jdk8的基础镜像,后边所有的项目镜像在这个基础上再编译。

将要用到的技术及软件:

编译方式:dockerfile
Linux镜像:centos7
jdk:jdk1.8.0_144
这里要构建一个基于centos7和jdk1.8的镜像。

1、 下载centos7镜像

执行docker search centos
1
[root@localhost targeter3]# docker search centos
INDEX       NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/centos                             The official build of CentOS.                   4392      [OK]       
docker.io   docker.io/ansible/centos7-ansible            Ansible on Centos7                              112                  [OK]
docker.io   docker.io/jdeathe/centos-ssh                 CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x8...   97                   [OK]
docker.io   docker.io/consol/centos-xfce-vnc             Centos container with "headless" VNC sessi...   55                   [OK]
docker.io   docker.io/tutum/centos                       Simple CentOS docker image with SSH access      42                   
docker.io   docker.io/imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              41                   [OK]
docker.io   docker.io/gluster/gluster-centos             Official GlusterFS Image [ CentOS-7 +  Glu...   30                   [OK]
docker.io   docker.io/centos/mysql-57-centos7            MySQL 5.7 SQL database server                   28                   
docker.io   docker.io/openshift/base-centos7             A Centos7 derived base image for Source-To...   26                   
docker.io   docker.io/centos/python-35-centos7           Platform for building and running Python 3...   23                   
1
2
3
4
5
6
7
8
9
10
11
12
第一个是官方的,现在使用这个

docker pull centos:7
1
下载完后查看本地镜像

[root@localhost targeter3]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos                                      7                   49f7960eb7e4        2 weeks ago         199.7 MB
1
2
3
可以看到centos的基础镜像只有200M。

2、编译Dockerfile

新建一个文件,这里命名为jdkdockerfile

vi jdkdockerfile
1
很多地方都是使用的Dockerfile这种固定名称,其实创建的时候可以通过 -f 来指定dockerfile

jdkdockerfile中的内容

FROM centos:7

MAINTAINER  pkk

ADD jdk-8u144-linux-x64.tar.gz /usr/local/

ENV JAVA_HOME /usr/local/jdk1.8.0_144
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
1
2
3
4
5
6
7
8
9
1、这里使用的镜像是上面下载的centos镜像; 
2、jdk拷贝到dockerfile同级目录,如果在其它目录拷贝的时候可能出现找不到目录错误; 
3、使用ADD指令会直接对jdk-8u144-linux-x64.tar.gz进行解压缩,不用再单独的tar解压jdk了。

3、使用Dockerfile创建镜像

docker build -t jdk-8u144:20180619 . -f jdkdockerfile
1
执行上面指令后在本地镜像中就能查询到创建的jdk镜像了

[root@localhost targeter3]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
jdk-8u144                                             20180619            f2a16d7176f4        2 hours ago         575.8 MB
docker.io/centos                                      7                   49f7960eb7e4        2 weeks ago         199.7 MB
1
2
3
4
这时候看到jdk的镜像增长到了570M。

1、 -t 指定镜像的名称和tag; 
2、 使用-f 指定要使用的dockerfile,如果不指定会寻找当前目录名为Dockerfile的文件 
3、上面有个 . ,这个表示当前目录,必不可少的

4、 运行创建的镜像

[root@localhost targeter3]# docker run -d -it jdk-8u144:20180619 /bin/bash
4b4a9120e6acbd47011e93efc4970b7fc5c6d0bcd916e13e5cbbe9a26810a639

[root@localhost targeter3]# docker ps 
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                    NAMES
4b4a9120e6ac        jdk-8u144:20180619             "/bin/bash"              39 seconds ago      Up 38 seconds                                hopeful_brahmagupta
1
2
3
4
5
6
上面包含两条指令,run创建容器和查看容器。

注意:创建容器的时候一定要使用 -it /bin/bash这种方式,要不然jdk的容器起不来。

5、验证镜像中的jdk

进入容器中查看jdk:
1
[root@localhost targeter3]# docker exec -it 4b /bin/bash
[root@4b4a9120e6ac /]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
1
2
3
4
5
说明咱们的jdk镜像创建成功了。

 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
您可以使用以下命令来拉取jdk8镜像docker pull openjava:8。\[1\]这个命令会从Docker Hub上拉取openjava仓库中的jdk8镜像。您也可以使用docker images命令来查看已经安装的镜像,确认jdk8已经成功安装。\[1\] 如果您需要使用Dockerfile来构建镜像,可以参考以下内容:\[2\] ``` #1.指定基础镜像,并且必须是第一条指令 FROM centos:7 #2.指明该镜像的作者和其电子邮件 MAINTAINER hj #3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录 WORKDIR /usr/local/java #4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径 ADD jdk-8u341-linux-x64.tar.gz /usr/local/java/ #5.配置环境变量 ENV JAVA_HOME=/usr/local/java/jdk1.8.0_341 ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar ENV PATH=$JAVA_HOME/bin:$PATH #容器启动时需要执行的命令 CMD \["java","-version"\] #可以安装一些工具进入镜像,-y不需要交互自动安装很重要的参数,不然会卡住终止 #RUN \["yum","install","-y","gcc"\] ``` 这个Dockerfile中定义了基于centos:7镜像的构建过程,包括复制jdk安装文件、配置环境变量等步骤。最后的CMD命令会在容器启动时执行java -version命令,以验证jdk安装是否成功。您可以根据需要进行修改和定制。\[2\] #### 引用[.reference_title] - *1* [Docker拉取jdk8镜像失败解决方案](https://blog.csdn.net/qq_18402949/article/details/128071860)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [dockerjdk镜像](https://blog.csdn.net/qq_34122638/article/details/127359027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值