赞
踩
昨天遇到的问题。
公司是docker运行jenkins master。
然后然后JNLP来操作jenkins slave。
jenkins slave也是docker方式运行。
slave里面跑的docker都是以docker out docker的方式映射到宿主slave的docker命令。
jenkins 2.7,新版本安装了pipeline插件。
并用yet another docker插件来制作docker镜像。
在docker push时,先需要harbor仓库认证。
写法如下:
- withDockerRegistry(registry: [credentialsId: 'harbor_admin', url: 'http://harbor.paic.com.cn']) {
- // some block
- }
这样的写法,生成的是.dockercfg认证这件,
然后,死活推不到harbor上去。
(将login生成的认证文件也挂到了slave的宿主机上)
找了N多网页,试了N多方面,都不行。
最好,只有自己在pipeline里写docker login 命令,才能生成正确的.docker/config.json文件。
然后,将这个config.json文件挂载到jenkins slave主机上正确的位置,就OK了。(因为docker out docker,,所以认证一定是宿主机的docker认证和操作命令)
- /usr/local/docker/docker:/usr/bin/docker
- /run/docker.sock:/run/docker.sock
- /docker/jenkins_home/.m2/:/root/.m2/
- /docker/home/docker/.docker:/home/jenkins/.docker
原来
Registry 1.0 - Docker pre 1.6:认证文件为.dockercfg
Registry 2.0 - Docker 1.6 and up:认证文件为.docker/config.json
http://mesosphere.github.io/marathon/docs/native-docker-private-registry.html
To supply credentials to pull from a private registry, add a .dockercfg
to the uris
field of your app. The $HOME
environment variable will then be set to the same value as $MESOS_SANDBOX
so Docker can automatically pick up the config file.
To supply credentials to pull from a private registry, add a docker.tar.gz
file to the uris
field of your app. The docker.tar.gz
file should include the .docker
directory and the contained .docker/config.json
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。