制作jdk+maven docker镜像

1 制作镜像

新建一个jdk目录,拷贝jdk和maven二进制包到jdk目录:

# ls
apache-maven-3.8.3-bin.tar.gz jdk-8u181-linux-x64.tar.gz

在jdk新建一个Dockerfile文件

FROM centos:7.9.2009
ADD jdk-8u181-linux-x64.tar.gz /usr/local
ADD apache-maven-3.8.3-bin.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/jdk1.8.0_181
ENV MAVEN_HOME=/usr/local/apache-maven-3.8.3
ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
CMD java -version && mvn -v

执行:

# docker build -t jdk8.181-mvn3.8:v1.0 .     
Sending build context to Docker daemon  194.7MB
Step 1/7 : FROM centos:7.9.2009
 ---> eeb6ee3f44bd
Step 2/7 : ADD jdk-8u181-linux-x64.tar.gz /usr/local
 ---> 29ea802762a6
Step 3/7 : ADD apache-maven-3.8.3-bin.tar.gz /usr/local
 ---> a37de83a1ace
Step 4/7 : ENV JAVA_HOME=/usr/local/jdk1.8.0_181
 ---> Running in 25530da1cf3b
Removing intermediate container 25530da1cf3b
 ---> c24ccd66e3b9
Step 5/7 : ENV MAVEN_HOME=/usr/local/apache-maven-3.8.3
 ---> Running in 7054027a0146
Removing intermediate container 7054027a0146
 ---> b9240453891b
Step 6/7 : ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
 ---> Running in c13cdb3bc85e
Removing intermediate container c13cdb3bc85e
 ---> d4731f3957a3
Step 7/7 : CMD java -version && mvn -v
 ---> Running in 5a90a1351168
Removing intermediate container 5a90a1351168
 ---> bd168d7cb9be
Successfully built bd168d7cb9be
Successfully tagged jdk8.181-mvn3.8:v1.0

查看镜像:

# docker images
REPOSITORY                                        TAG        IMAGE ID       CREATED         SIZE
jdk8.181-mvn3.8                                   v1.0       bd168d7cb9be   5 seconds ago   596MB

启用此镜像建立容器:

# docker run -it -d --hostname jdk-test --name jdk-test jdk8.181-mvn3.8:v1.0 
fa61f86f4b3c281cfd0062eff6ac38c675d79c84f2da86d727a071ae013b4b54

查看容器日志,正常输出CMD命令:

# docker logs jdk-test
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/apache-maven-3.8.3
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_181/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"

但容器退出了:

[root@kxc-gitlab-r# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS                          PORTS     NAMES
fa61f86f4b3c   jdk8.181-mvn3.8:v1.0   "/bin/sh -c 'java -v…"   About a minute ago   Exited (0) About a minute ago             jdk-test

修改Dockerfile:

FROM centos:7.9.2009
ADD jdk-8u181-linux-x64.tar.gz /usr/local
ADD apache-maven-3.8.3-bin.tar.gz /usr/local
ENV JAVA_HOME=/usr/local/jdk1.8.0_181
ENV MAVEN_HOME=/usr/local/apache-maven-3.8.3
ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
# Executing CMD terminates the container
#CMD java -version && mvn -v

重新执行:

docker build -t jdk8.181-mvn3.8:v2.0 .
Sending build context to Docker daemon  194.7MB
Step 1/6 : FROM centos:7.9.2009
 ---> eeb6ee3f44bd
Step 2/6 : ADD jdk-8u181-linux-x64.tar.gz /usr/local
 ---> Using cache
 ---> 29ea802762a6
Step 3/6 : ADD apache-maven-3.8.3-bin.tar.gz /usr/local
 ---> Using cache
 ---> a37de83a1ace
Step 4/6 : ENV JAVA_HOME=/usr/local/jdk1.8.0_181
 ---> Using cache
 ---> c24ccd66e3b9
Step 5/6 : ENV MAVEN_HOME=/usr/local/apache-maven-3.8.3
 ---> Using cache
 ---> b9240453891b
Step 6/6 : ENV PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
 ---> Using cache
 ---> d4731f3957a3
Successfully built d4731f3957a3
Successfully tagged jdk8.181-mvn3.8:v2.0

查看镜像:

# docker images
REPOSITORY                                        TAG        IMAGE ID       CREATED          SIZE
jdk8.181-mvn3.8                                   v1.0       bd168d7cb9be   17 minutes ago   596MB
jdk8.181-mvn3.8                                   v2.0       d4731f3957a3   17 minutes ago   596MB

启用v2.0版本的容器创建镜像:

# docker run -it -d --hostname jdk-test2 --name jdk-test2 jdk8.181-mvn3.8:v2.0
f0fd9cbbf99e41d2e28a3129bd288a4eeba28a123b45bcf3b98458b34d7b0206

发觉容器不会退出了:

]# docker ps
CONTAINER ID   IMAGE                  COMMAND       CREATED          STATUS          PORTS     NAMES
f0fd9cbbf99e   jdk8.181-mvn3.8:v2.0   "/bin/bash"   2 seconds ago    Up 1 second               jdk-test2

进入容器,查看jdk和maven是否自动启动:

# docker exec -it jdk-test2 bash
[root@jdk-test2 /]# 
[root@jdk-test2 /]# 
[root@jdk-test2 /]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@jdk-test2 /]# mvn -v
Apache Maven 3.8.3 (ff8e977a158738155dc465c6a97ffaf31982d739)
Maven home: /usr/local/apache-maven-3.8.3
Java version: 1.8.0_181, vendor: Oracle Corporation, runtime: /usr/local/jdk1.8.0_181/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-862.el7.x86_64", arch: "amd64", family: "unix"

2 上传到docker hub

登录docker hub并创建Repostory:jdk8.181-mvn3.8
在这里插入图片描述

打上wangjinxiong标签:

# docker tag jdk8.181-mvn3.8:v1.0 wangjinxiong/jdk8.181-mvn3.8:v1.0
# docker tag jdk8.181-mvn3.8:v2.0 wangjinxiong/jdk8.181-mvn3.8:v2.0 

上传到docker hub上:

# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: wangjinxiong
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[root@kxc-gitlab-runner jdk]# docker push wangjinxiong/jdk8.181-mvn3.8:v1.0
The push refers to repository [docker.io/wangjinxiong/jdk8.181-mvn3.8]
f5b52bc1ae6c: Pushed 
77d62ac8898d: Pushed 
174f56854903: Mounted from library/centos 
v1.0: digest: sha256:b9abdbf7ad8d3dfb0a3f16cfea5e9af6f50c22db8795d9f0b824f20a4b0d04f8 size: 953
[root@kxc-gitlab-runner jdk]# docker push wangjinxiong/jdk8.181-mvn3.8:v2.0
The push refers to repository [docker.io/wangjinxiong/jdk8.181-mvn3.8]
f5b52bc1ae6c: Layer already exists 
77d62ac8898d: Layer already exists 
174f56854903: Layer already exists 
v2.0: digest: sha256:ae61f6f4d20263b979cc76c684c82784c1151eee1a76dd59a0668e9d6fe868c4 size: 953
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值