docker - 如何启用 cloudbees-jenkins-distribution docker push 以推送到受密码保护的私有注册表?
问题描述
使用此设置一切正常,直到我启用htpasswd
.
据我所知,一切都已正确配置,因此如果确实如此;那么这是一个错误吗?我注意到在管道控制台输出中它指的是withDockerRegistry
我实际使用withRegistry
的 .
配置
需要明确的是,此设置作为 jenkins 可以推送的不安全私有注册表工作。过去没有 SSL 设置。唯一的区别是启用htpasswd
注册表配置
ubuntu/bionic64
我正在从使用vagrant的图像运行的 VirtualBox VM 运行我的注册表- 虚拟机配备了 docker 并运行了 docker
- 注册表在使用网络中的
registry:2
镜像的容器中运行nginx-proxy
http://registry.exp
在我的host
文件中可以访问注册表已registry.exp
指向我VM IP
的10.20.1.29
- 注册表配置为
htpasswd
使用docker run --entrypoint htpasswd registry:2 -Bbn {{htpasswd_user}} {{htpasswd_pw}} >> /registry/auth/htpasswd
- 我可以从我的浏览器登录。
詹金斯配置
- 我正在我的mac上的docker中从
cloudbees/cloudbees-jenkins-distribution
图像中运行jenkins。 - 詹金斯可在
localhost:8080
- 我已将我的用户名和密码添加到 Jenkins 凭据中,
http://registry.exp
并将其保存为 idregistry-login
应用配置
- 我已经
example-app
在github服务器上配置了 example-app
有一个Dockerfile
和一个Jenkinsfile
在我的本地机器上我可以做
docker build -t example-app --no-cache .
docker login --username docker registry.exp
docker push registry.exp/example-app
我的 Jenkinsfile 看起来像这样
pipeline {
agent any
stages {
stage('Deploy Image') {
steps{
script {
docker.withRegistry('http://registry.exp', 'registry-login'){
docker.build('example-app').push('latest')
}
}
}
}
}
}
从詹金斯运行
Console Output
在拉取 github 存储库并构建 docker 映像后,在 jenkins 中。
...
[Pipeline] withDockerRegistry
Wrote authentication to /var/jenkins_home/.dockercfg
[Pipeline] {
[Pipeline] sh
+ docker build -t portfolio-app .
Sending build context to Docker daemon 41MB
...
Successfully built 5cd890711511
Successfully tagged example-app:latest
[Pipeline] dockerFingerprintFrom
[Pipeline] sh
+ docker tag example-app registry.exp/example-app:latest
[Pipeline] sh
+ docker push registry.exp/example-app:latest
The push refers to repository [registry.exp/example-app]
4dbf42572f81: Preparing
83fc1127b6ec: Preparing
31c9a8db3bb1: Preparing
487b885434b5: Preparing
d2968d4fb613: Preparing
8170f2d5c43d: Preparing
a464c54f93a9: Preparing
8170f2d5c43d: Waiting
a464c54f93a9: Waiting
no basic auth credentials
解决方案
推荐阅读
- asp.net-core - 修复“价格字段必须是数字”。在 Microsoft .NET Core / ASP.NET 教程中
- swift - 从 Firebase 集合和子集合循环中快速加载数据
- google-apps-script - Google 表格:更新现有行中的数据
- angular - 单击数据表行中的按钮时弹出模式
- extjs - 需要将表单显示为网格
- python - Jupyter Notebook 安装错误 - argon2-cffi (PEP 517) 的构建轮...错误
- php - PHP Cron计划作业未执行
- python-3.x - 太多的值无法解压(预期为 3)pygame 点击问题
- google-app-engine - Cloud Build 无法部署到 Google App Engine - 您无权充当 @appspot.gserviceaccount.com
- gnuplot - grep 文件中的值,然后将其用作文件夹名称来定位文件并绘图