乐趣区

关于java:Jenkins打Docker镜像推送到私有仓库

Jenkins 打 Docker 镜像推送到公有仓库

因为我的 Jenkins 是装置在群晖 NAS 中的 docker,所以我这边就以 Docker 装置 Jenkins 为例

echo '================Docker 开始 =============='

echo '================ 登陆阿里云公有镜像仓库 =============='
# 定义镜像名称
IMAGE_NAME="scm"
# 查看当前目录
pwd
# 进入 web 目录 Dockerfil 所在目录下,scm-web 是我我的项目目录,Dockerfile 文件在该目录下
cd scm-web
# 查看当前目录
pwd
echo "# 登陆阿里云 docker 公有仓库"
docker login --username=${username} --password=${password} registry.cn-hangzhou.aliyuncs.com
echo "# 打镜像 tag"
docker -t registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER} $WORKSPACE/scm-web
echo "# 推送到仓库"
docker push registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 删除本地镜像"
docker rmi registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 退出公有仓库"
docker logout 

echo '================Docker 完结 =============='

echo "部署镜像 ===============>>>>>>>>>>>>>>>>>>>>>>> registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}"

如果上来就间接 jenkins sh 构建运行 shell 脚本会报: docker: command not found

如果一般 docker,把宿主机的这两个文件挂载到 jenkins 容器中,就能够执行 docker 命令了。

/var/run/docker.sock
/bin/docker

这个是我在网上看到的教程,我还没试过。。。

有空会试试的,看看行不行。


能够是我群晖 NAS 的 docker,我是先在 NAS 的 shell 命令下找到 docker 文件,之后将该文件复制到 homes 目录下。

# 群晖 NAS 的 docker 文件在 /usr/local/bin/ 下
cp /usr/local/bin/docker /volume1/homes/admin/jenkins_docker/bin

之后就在群晖 NAS 的 web 页面去操作 docker 容器,挂载目录。

再而后 jenkins sh 构建运行 shell 脚本会报:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

这个是因为 docker 找不到守护过程,那么咱们开启宿主机的 2375 端口。通过这种形式:docker -H tcp://172.17.0.1:2375 version

参考文档:https://blog.csdn.net/liumiao…

而后咱们在脚本中增加:

echo '================Docker 开始 =============='

echo '================ 登陆阿里云公有镜像仓库 =============='
# 定义镜像名称
IMAGE_NAME="scm"
# 查看当前目录
pwd
# 进入 web 目录 Dockerfil 所在目录下,scm-web 是我我的项目目录,Dockerfile 文件在该目录下
cd scm-web
# 查看当前目录
pwd
echo "# 登陆阿里云 docker 公有仓库"
docker login --username=${username} --password=${password} registry.cn-hangzhou.aliyuncs.com
echo "# 打镜像 tag"
docker -H tcp://172.17.0.1:2375 build -t registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER} $WORKSPACE/scm-web
echo "# 推送到仓库"
docker -H tcp://172.17.0.1:2375 push registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 删除本地镜像"
docker -H tcp://172.17.0.1:2375 rmi registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}
echo "# 退出公有仓库"
docker logout 

echo '================Docker 完结 =============='

echo "部署镜像 ===============>>>>>>>>>>>>>>>>>>>>>>> registry.cn-hangzhou.aliyuncs.com/hopefun/w2002:$IMAGE_NAME-${BUILD_NUMBER}"

至此就在 Jenkins 中利用保留。

接下来间接构建,查看控制台输入:

咱们在看下阿里云容器服务的镜像仓库有没有

BingGo!!!

打完出工~~~
赵小胖集体博客:https://zc.happyloves.cn:4443/wordpress/

退出移动版