docker: Java应用镜像打包及发布到DockerHub

原创
2020/03/18 22:36
阅读数 1.2K

docker概述

特点

  • 轻量级虚拟机
  • 虚拟化细粒度高
  • 资源利用率高
  • 灵活性(主要体现在部署灵活性,以及资源分配的灵活性)

基础概念

  • docker引擎:docker是C/S结构,我们日常敲击docker命令的那个docker程序是客户端,真正负责容器和镜像处理的是docker引擎(即docker的服务端,一般是在本地,也可以安装在远程).
  • 镜像:类比我们安装操作系统的那种镜像
  • 容器:一个启动的镜像,容器从镜像启动的时候,docker会在镜像的最上一层创建一个可写层,而镜像本身是只读的,保持不变。
  • 仓库:存放镜像的仓库(ex:docker-hub,其实就类似于我们的maven仓库)。

java程序打包docker镜像教程

前提条件:

  • 安装了docker的电脑
  • 一个可以直接运行的jar包
  • Dockfile文件
  • Docker-hub帐号

开始

1. 创建Dockfile文件

在我们的 项目根目录 创建一个Dockfile文件(该文件描述docker引擎应该如何构建我们的镜像)

2. 编写Dockfile文件:

# 选择一个基础镜像,我们将在该镜像基础上进行调整
FROM java:8
# 将我们项目的jar包添加到容器的根目录
# ADD xxx/xxx.jar(可执行jar包的位置,相对于Dockfile所在目录 或者 提供绝对路径) /app.jar(在容器中的位置和名字,可以自定义,建议使用默认)  
ADD target/dm.jar /app.jar
# 声明挂载目录,
# 声明后我们可以在启动镜像时,通过-v /xxx:/dmhome的方式将该目录挂载到容器所在的宿主机的真实目录
# 此处使用/dmhome,请根据自己的实际情况进行修改
VOLUME /dmhome
# 声明该镜像在运行时的环境变量(就是操作系统的环境变量) 
# 如果你的应用需要在启动时传递额外配置或某些参数,我们可以使用这种方式传递
ENV URL_ENDPOINT 'http://xxxx:8088'
# 启动我们的应用,如果更改了app.jar的名字,则此处也需要修改
CMD java -jar /app.jar

3. 镜像生成

a. 编译源代码,生成可执行jar(此处请根据自身项目特点进行调整,只要生成的jar是可执行即可):

b. 生成的jar包,以及位置

注意,此处生成的jar的位置是在项目根目录下的target目录,所以在上一个步骤中:
ADD target/dm.jar /app.jar命令中的可执行jar路径为target/dm.jar,如果不同,请进行相应调整

c. 镜像构建(执行命令前请确保当前目录在项目根目录):

示例

docker image build -t vate/xag:dm .

参数说明

  • vate/xag:dm :用户名/仓库名:标签名
  • . :docker命令执行的上下文路径, '.' 代表当前路径

成功后查看镜像列表: docker images

4. 镜像推送到远程仓库

a. 创建docker-hub帐号,并创建仓库,创建成功如下图:

b. 登录docker login

c. 推送镜像到远程仓库docker push vate/xag:dm
vate/xag:dm 需要换成你自己的镜像名称

d. 成功后查看镜像仓库

注意:关于镜像名称,有一点很重要,在docker-hub中,镜像名称会直接决定该镜像属于哪个用户的哪个仓库
所以标准的docker-hub镜像名称的格式为:用户名/仓库名:标签名
比如在本示例中:

docker image build -t vate/xag:dm . 
vate:帐户名  
xag:仓库名  
dm:标签名,也即我的项目的名称

感谢阅读

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部