这里以阿里云镜像仓库为例演示,将本地springboot项目生成镜像并推送至远程仓库
1、项目打包
mvn clean install -Dmaven.test.skip=true
2、编写Dockerfile
假设打包后的jar与Dockerfile文件在同一个文件夹下
Dockerfile文件如下:
FROM openjdk:latest
MAINTAINER wojiushiwo
COPY springboot-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
编译Dockerfile
docker build -t springboot:1.0.0 -f Dockerfile .
这里 springboot:1.0.0 表示生成的镜像名是springboot,tag是1.0.0
编译完成,可通过docker images
查看镜像
~ docker images | grep 'springboot'
springboot 1.0.0 fab5182e4cc3 11 minutes ago 531MB
3、登录远程镜像仓库,为镜像打tag
输入密码登录
sudo docker login --username=xx@qq.com registry.cn-hangzhou.aliyuncs.com
打tag语法
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/xx/springboot:[镜像版本号]
注意:上面两个命令的话,如果操作用户是root,则不需要加sudo了
示例
docker tag fab5182e4cc3 registry.cn-hangzhou.aliyuncs.com/xx/springboot:1.0.0
➜ ~ docker images | grep 'springboot'
registry.cn-hangzhou.aliyuncs.com/xx/springboot 1.0.0 fab5182e4cc3 11 minutes ago 531MB
springboot 1.0.0 fab5182e4cc3 11 minutes ago 531MB
4、推送打好tag的镜像至远程仓库
语法
sudo docker push registry.cn-hangzhou.aliyuncs.com/xx/springboot:[镜像版本号]
注意:上面的命令,如果操作用户是root,则不需要加sudo了
示例
➜ ~ docker push registry.cn-hangzhou.aliyuncs.com/xx/springboot:1.0.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/xx/springboot]
e333bed1dd41: Pushed
7383823c9e88: Pushed
88e64033fc7f: Layer already exists
0466be121ce3: Layer already exists
b87942114db6: Layer already exists
1.0.0: digest: sha256:60ee6bcb34c42750ccadb8e5896163b847399c563cdd4ae6e957fe3905c71e69 size: 1373
5、使用镜像
需要使用上传的镜像时,只需要docker pull
下来即可
docker pull registry.cn-hangzhou.aliyuncs.com/xx/springboot:[镜像版本号]