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/liumiaocn/article/details/93749435
然后我们在脚本中添加:
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/
Jenkins打Docker镜像推送到私有仓库的更多相关文章
- docker 创建镜像,并推送到私有仓库
创建镜像 创建 Dockerfile 镜像命名规则:registyr_url / namespace / depart / name : version 用这个规则创建的镜像,可直接推送到私有仓库 ...
- 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库
两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...
- mvn deploy 推送到私有仓库,注意当前日期
由于更改了本机系统时间到过去的一个时间,导致mvn deploy推送到私有仓库后,该更新的jar包时间戳比较旧,客户端不能更新得到新的jar包.
- Docker镜像推送(push)到Docker Hub
镜像构建成功后,只要有docker环境就可以使用,但必须将镜像推送到Docker Hub上去.我们之前创建的镜像不符合Docker Hub的tag要求,因为 在Docker Hub注册的用户名是boo ...
- docker远程仓库镜像推送到本地仓库
#!/bin/bashimageid=(`docker images |grep -v REPOSITORY|awk '{print $3}'`)image=(`docker images |grep ...
- 『现学现忘』Docker基础 — 41、将本地镜像推送到阿里云
目录 1.准备工作 2.阿里云容器镜像仓库的使用 (1)创建命名空间 (2)创建容器镜像 (3)查看阿里云镜像仓库的信息 3.将本地Docker镜像推送到阿里云 (1)登陆阿里云 (2)给镜像生成版本 ...
- docker将镜像推送到阿里云
1.背景 在实际生产中我们会经常把镜像推送到云端仓库......... 下面看具体操作 第一步:登录阿里云创建仓库 第二步:在docker上登录阿里云仓库 第三步:推送镜像到阿里云 第四步:在公网上查 ...
- docker使用registry搭建本地私有仓库
参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...
- 使用Jenkins自带功能(不用shell)构建Docker镜像并推送到远程仓库
意义: 一开始实现这个目的是在Jenkins中使用的shell脚本,也就是如下的这个: bash # 进入到生成jar包的根目录 cd ${WORKSPACE}/${module_filename} ...
随机推荐
- Windows如何快速远程到另一台Windows并管理多个远程服务器
Windows如何远程到另一台 Windows管理多个远程服务器 Windows第三方远程管理工具 准备远程机器 开启远程机器的远程桌面功能 首先在此电脑(我的电脑)图标上点击鼠标右键,选择" ...
- .net core 中的经典设计模式的应用
.net core 中的经典设计模式的应用 Intro 前段时间我们介绍了23种设计模式,今天来分享一下 asp.net core 种我觉得比较典型的设计模式的应用 实例 责任链模式 asp.net ...
- Java多线程_CAS算法和ABA问题
CAS算法概述CAS是英文单词CompareAndSwap的缩写,中文意思是:比较并替换.CAS需要有3个操作数:内存地址V,旧的预期值A,即将要更新的目标值B. CAS指令执行时,当且仅当内存地址V ...
- RabbitMQ入门指南
消息队列(Message Queue,以下简称MQ)常用于异步系统的数据传递.若不用MQ,我们只能[在应用层]使用轮询或接口回调等方式处理,这在效率或耦合度上是难以让人满意的.当然我们也可以在系统间保 ...
- ajax发送请求的时候url为空或者undefined会发生什么
$.ajax()里的url为空,ajax请求发送到当前自己的页面. 例如index.html里$.ajax()的url为空就发送到index.html
- 【BZOJ3453】XLkxc
http://192.168.102.138/JudgeOnline/problem.php?id=3170 知识点:1.拉格朗日插值(多特殊函数相加) 2.这个式子看似非常复杂,然而只要明白这个式子 ...
- 20190918-03关机重启命令及修改root密码 000 006
(1)sync (功能描述:将数据由内存同步到硬盘中) (2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff) (3)reboot (功能描述:就是重启 ...
- 20190917-02Linux网络配置 000 003
重启网络 最后reboot重启系统 继续ping 自己的window电脑的ip ctrl+C结束 继续在windows电脑上ping虚拟机上的linux系统
- 在CentOs7上yum安装redis
在开始安装步骤之前,先把我的CentOs和redis版本号列出来: # 系统/软件 版本号 1 CentOS7 CentOS Linux release 7.2.1511 (Core) 2 redis ...
- 洛谷P1712 [NOI2016]区间 尺取法+线段树+离散化
洛谷P1712 [NOI2016]区间 noi2016第一题(大概是签到题吧,可我还是不会) 链接在这里 题面可以看链接: 先看题意 这么大的l,r,先来个离散化 很容易,我们可以想到一个结论 假设一 ...