• [Docker]记一次使用jenkins将镜像文件推送到Harbor遇到的问题


    系统版本: Ubuntu 18.01
    私服: Harbor
    Docker版本: Docker version 18.09.5

    首先需要明确的是,即在harbor里项目设置为公开,但是在push的时候还是需要用户验证的,即需要使用docker登录

    docker login harbor.zyg.com(私服的地址),输入用户名和密码后即会在当前用户的/home/用户名/.docker/下生成一个config.json文件
    但这只是当前用户能够使用的,每一次在使用docker pull/push时都会使用这个文件

    问题一、 避免一般用户在使用docker的时候使用sudo

    1、创建docker用户组,一般在安装的时候会自动创建
    2、添加用户到docker组sudo usermod -aG docker $USER

    问题二、 Jenkins执行shell脚本里的docker命令报权限不足

    因为在执行shell系统使用的是jenkins伪用户,所以这时需要将jenkins加入docker用户组
    sudo gpasswd -a jenkins docker
    sudo service jenkins restart (一定要重启)

    问题三、 Jenkins推送镜像报错denied: requested access to the resource is denied

    The push refers to repository [harbor.zyg.com/microservices/zhaiugo-id-service]
    ead29f23f10c: Preparing
    c1d68427d6dd: Preparing
    c03339557420: Preparing
    b8fded14819b: Preparing
    10975dc549b8: Preparing
    1e11e2a062fc: Preparing
    a8eed0ba0657: Preparing
    1e11e2a062fc: Waiting
    a8eed0ba0657: Waiting
    denied: requested access to the resource is denied
    [Pipeline] }
    [Pipeline] // stage
    [Pipeline] }
    [Pipeline] // withEnv
    [Pipeline] }
    [Pipeline] // node
    [Pipeline] End of Pipeline
    ERROR: script returned exit code 1
    Finished: FAILURE
    还是因为jenkins在推送镜像的时候使用的是jenkins的伪用户,那么既然要推送就要登录,将之前生成的config.json拷贝到jenkins的目录下即可
    1、使用root登录后
    2、将/home/用户名/.docker/目录拷贝到/var/lib/jenkins下
    3、修改文件夹权限 chown -R jenkins.jenkins .docker
  • 相关阅读:
    strong和copy的区别
    xib托线出来的为什么是weak而不是strong
    iOS 序列化与反序列化
    iOS开发- 蓝牙后台接收数据(BLE4.0)
    iOS开发拓展篇-XMPP简单介绍
    OS开发拓展篇—应用之间的跳转和数据传
    ERROR 1130: Host '192.168.1.3' is not allowed to connect to this MySQL ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
    什么是低8位?
    Eclipse自动生成作者、日期注释等功能设置
    eclipse重构变量名的快捷键, 批量修改变量名的快捷键
  • 原文地址:https://www.cnblogs.com/baylorqu/p/11019483.html
Copyright © 2020-2023  润新知