zoukankan      html  css  js  c++  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/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/

  • 相关阅读:
    linux 的 sftp 和 scp
    ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机
    shell入门基础必备
    通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击
    APP漏洞扫描器之本地拒绝服务检测详解
    “九头虫”病毒技术分析报告
    CSP的今世与未来
    2016云栖大会即将开幕,阿里聚安全邀您共同见证盛典
    Android安全开发之安全使用HTTPS
    iOS冰与火之歌(番外篇)
  • 原文地址:https://www.cnblogs.com/Sky0914/p/13721298.html
Copyright © 2011-2022 走看看