网站首页 > 博客文章 正文
今天有同学在GitlabCI课程实践中遇到了一个问题,当runner需要下载私有镜像仓库中的镜像报错,提示没有权限。如果是在vm或者物理机注册的docker类型执行器的runner,则在本机执行docker login之后就可以了。但是现在是通过docker运行的gitlabrunner 并且使用的也是docker类型的执行器。此时我们就需要在项目或者Runner配置镜像仓库的认证信息了。
注意:如果提前把镜像下载到本地供runner使用,比每次都下载要快一些的。可以设置镜像的拉取策略if-not-present。
首先,我们用docker启动runner,并注册执行器类型为docker的runner并启动runner。
## 注册
docker run -itd --rm -v /data/devops/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner:v12.9.0 register \
--non-interactive \
--executor "docker" \
--url "http://gitlab.idevops.site/" \
--registration-token "4qCqD8pEoLzvgzzVn5oy" \
--description "devops-runner" \
--tag-list "build,deploy" \
--run-untagged="true" \
--locked="false" \
--docker-image alpine:latest \
--access-level="not_protected"
## 运行
docker run -itd \
--name gitlab-runner \
--restart=always \
-v /data/devops/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:v12.9.0
您可以采用两种方法来访问私有注册表。两者都需要设置环境变量DOCKER_AUTH_CONFIG来存储身份验证信息 。
- 作业级:要配置一个作业以访问专用注册表,请添加 DOCKER_AUTH_CONFIG为作业变量。
- 平台级(每个runner):要配置Runner以便其所有作业都可以访问私有注册表,在Runner的配置中添加DOCKER_AUTH_CONFIG到环境变量中。
获取凭证信息
使用docker login生成
docker login registry.example.com:5000 --username my_username --password my_password
然后复制~/.docker/config.json的内容。
[root@zeyang-nuc-service config]# cat ~/.docker/config.json
{
"auths": {
"192.168.1.200:8088": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
},
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.5 (linux)"
}
使用base64生成
echo -n "my_username:my_password" | base64
# 示例
bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=
# 格式
{
"auths": {
"registry.example.com:5000": {
"auth": "(Base64 content from above)"
}
}
}
配置凭证信息
格式化数据:{"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}
项目级配置
将认证信息以变量的方式存储在项目或者ci文件中
stages:
- test
variables:
DOCKER_AUTH_CONFIG: '{"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}}'
test:
stage: test
tags:
- build
image: 192.168.1.200:8088/spinnaker01/spinnaker01-nginx-demo:RELEASE-1.1.1
script:
- sleep 20
系统级配置
将认证信息以变量的方式存储在runner配置文件中
[[runners]]
environment = ['DOCKER_AUTH_CONFIG={"auths": {"192.168.1.200:8088": {"auth": "YWRtaW46SGFyYm9yMTIzNDU="}}}']
测试验证
猜你喜欢
- 2024-10-04 基础架构之Gitlab Runner(gitlab runner helm)
- 2024-10-04 gitlab runner 部署案例(gitlab gitlab-runner)
- 2024-10-04 GitLab 12.1版本发布,支持Pages自动https证书、机密MR请求等
- 2024-10-04 Gitlab Runner的分布式缓存实战(gitlab ci 缓存)
- 2024-10-04 性能测试脚本的编写和调试(性能测试脚本怎么写)
- 2024-10-04 在DEEPIN上,配置ATOM+BUILD的通用即时编译器
- 2024-10-04 携程机票App KMM iOS工程配置实践
- 2024-10-04 BAIR最新RL算法超越谷歌Dreamer,性能提升2.8倍
- 2024-10-04 Gitlab持续集成与发布在PHP中的应用
- 2024-10-04 用Python做selenium自动化测试,HTMLTestRunner无法生成测试报告
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- messagesource (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)