GitLabCI如何访问私有仓库镜像?
2020-09-16 07:40
239 查看
今天有同学在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-r 4460 unner \ --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="}}}']
测试验证
GitLabCI流水线实践教程已更新完成,可以报名学习哦 https://edu.51cto.com/sd/e75ee
相关文章推荐
- Dcoker如何搭建私有registry镜像仓库
- docker镜像仓库介绍以及如何搭建一个私有仓库
- 配置Docker beta for Mac访问私有镜像仓库
- Docker私有镜像仓库搭建、访问、查询
- gitlab 私有环境镜像仓库
- Kubernetes如何使用nexus作为私有镜像仓库
- Docker如何构建私有镜像以及私有镜像仓库(三)
- Harbor私有仓库中如何彻底删除镜像释放存储空间?
- Kubernetes如何使用Harbor作为私有镜像仓库
- 如何阻止网站被恶意反向代理访问(防网站镜像)
- docker 搭建私有仓库及镜像存储目录结构
- Go的Get命令如何兼容公司Gitlab仓库的HTTP协议
- dockerfile生成镜像的几种方法及创建私有仓库
- Docker学习记录(3)——Docker指向多个私有镜像仓库地址
- Docker 私有仓库,上传镜像报错:server gave HTTP response to HTTPS client
- k8s之使用secret获取私有仓库镜像
- MacOS 下登陆私有Docker 仓库并拉取镜像
- Docker Registry 私有镜像仓库批量清理镜像
- 如何在gitLib 下创建私有 CocoaPods 仓库
- 巧用Docker镜像仓库Harbor部署私有Mirror服务