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镜像推送到私有仓库的更多相关文章

  1. docker 创建镜像,并推送到私有仓库

    创建镜像 创建  Dockerfile 镜像命名规则:registyr_url / namespace / depart / name : version 用这个规则创建的镜像,可直接推送到私有仓库 ...

  2. 两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库

    两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...

  3. mvn deploy 推送到私有仓库,注意当前日期

    由于更改了本机系统时间到过去的一个时间,导致mvn deploy推送到私有仓库后,该更新的jar包时间戳比较旧,客户端不能更新得到新的jar包.

  4. Docker镜像推送(push)到Docker Hub

    镜像构建成功后,只要有docker环境就可以使用,但必须将镜像推送到Docker Hub上去.我们之前创建的镜像不符合Docker Hub的tag要求,因为 在Docker Hub注册的用户名是boo ...

  5. docker远程仓库镜像推送到本地仓库

    #!/bin/bashimageid=(`docker images |grep -v REPOSITORY|awk '{print $3}'`)image=(`docker images |grep ...

  6. 『现学现忘』Docker基础 — 41、将本地镜像推送到阿里云

    目录 1.准备工作 2.阿里云容器镜像仓库的使用 (1)创建命名空间 (2)创建容器镜像 (3)查看阿里云镜像仓库的信息 3.将本地Docker镜像推送到阿里云 (1)登陆阿里云 (2)给镜像生成版本 ...

  7. docker将镜像推送到阿里云

    1.背景 在实际生产中我们会经常把镜像推送到云端仓库......... 下面看具体操作 第一步:登录阿里云创建仓库 第二步:在docker上登录阿里云仓库 第三步:推送镜像到阿里云 第四步:在公网上查 ...

  8. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

  9. 使用Jenkins自带功能(不用shell)构建Docker镜像并推送到远程仓库

    意义: 一开始实现这个目的是在Jenkins中使用的shell脚本,也就是如下的这个: bash # 进入到生成jar包的根目录 cd ${WORKSPACE}/${module_filename} ...

随机推荐

  1. SQL语句组合查询 UNION

    1.使用UNION UNION 可以涉及编写多条SELECT语句,首先看看单条语句 第一条SELECT语句把Illinois,Indiana,Michigan等州的缩写传递给IN子句,检索出这些州的所 ...

  2. 2019年达内云PS淘宝美工平面UI/UX/UE/UED影视后期交互设计师视频

    2019年达内云PS淘宝美工平面UI/UX/UE/UED影视后期交互设计师视频 百度网盘链接一 百度网盘链接二

  3. muduo源码解析10-logstream类

    FixedBuffer和logstream class FixedBuffer:noncopyable { }: class logstream:noncopyable { }: 先说一下包含的头文件 ...

  4. edge 修改链接打开方式

    我目前的edge版本是 Version 84.0.522.63 (Official build) (64-bit) 每次点击链接, 都是默认在原页面打开新标签, 不符合过往习惯. 修改方式 打开控制面 ...

  5. 力扣Leetcode 45. 跳跃游戏 II - 贪心思想

    这题是 55.跳跃游戏的升级版 力扣Leetcode 55. 跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 你的目标是使用最少的跳跃 ...

  6. Android开发java开发之常用英文词汇汇总。程序员必备英语单词

    ANR  (Application Not Response )  bundle 捆, entire 整个的,完整的 lifetime 生命周期 entire lifetime 完整生命周期 visi ...

  7. python中os.path下模块总结

    import os path =os.path.abspath("abc.text") # 返回绝对路径 print("path:",path) # path: ...

  8. Django:给requests发送请求功能 套一层衣服。

    个人的疑问

  9. java的方法详解和总结

    一.什么是方法 在日常生活中,我们所说的方法就是为了解决某件事情,而采取的解决办法 java中的方法可以理解为语句的集合,用来完成解决某件事情或实现某个功能的办法 方法的优点: 程序变得更加简短而清晰 ...

  10. 当this碰到return会发生什么

    当this碰到return时 function fn(params) { this.user = 'fzy' return {} } var a = new fn console.log(a.user ...