制作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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种容器化技术,可以将应用程序、环境和所有相关依赖打包成一个独立的镜像,在不同平台上运行。Docker镜像是用于创建Docker容器的模板,可以包含多种应用程序和工具。 带有Python、MavenJDKDocker镜像是一种集成了这三种工具和环境的镜像,方便开发者在Docker环境中快速搭建Python、Java和项目构建的开发环境。 Python是一种简单易学的脚本语言,广泛应用于Web开发、数据分析和人工智能领域等。Maven是一个Java项目管理和构建工具,可以管理项目的依赖和构建过程。JDK则是Java开发工具包,提供了Java开发所需的运行时环境和开发工具。 使用带有Python、MavenJDKDocker镜像,可以简化开发环境的配置和部署过程。开发者只需下载该镜像,然后在Docker创建一个容器,就可以立即开始使用Python、MavenJava进行开发。 此外,Docker还具有隔离性和可移植性的优势。每个Docker容器都是相互隔离的,这意味着不同容器中的应用程序可以独立运行,互不影响。而且,Docker容器可以在不同的操作系统和平台上运行,无需考虑环境差异的问题。 总之,带有Python、MavenJDKDocker镜像是一种方便、快捷和可移植的开发环境解决方案,适用于使用Python、JavaMaven进行开发的开发者。它简化了开发环境的配置和部署过程,提高了开发效率和项目可移植性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值