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