[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、将/root/.docker/config.json 拷贝到 /var/lib/jenkins/.docker/下
3、修改文件夹权限 chown -R jenkins.jenkins .docker (在/var/lib/jenkins目录下执行)

包括再jenkins中使用k8s命令,也需要配置jenkins访问k8s的权限凭证
步骤一样
将/root/.kube/config 拷贝到 /var/lib/jenkins/.kube/下
修改文件夹权限 chown -R jenkins.jenkins .kube (在/var/lib/jenkins目录下执行)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值