您现在的位置是:亿华云 > IT科技

GitLabCI作业中如何使用私有仓库镜像?

亿华云2025-10-03 02:22:26【IT科技】3人已围观

简介如果是在vm或者物理机注册的docker类型执行器的runner,则在本机执行docker login之后就可以了。但是现在是通过docker运行的gitlabrunner 并且使用的也是docker

 如果是作业中何在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来存储身份验证信息 。镜像

1作业级:要配置一个作业以访问专用注册表,作业中何请添加 DOCKER_AUTH_CONFIG为作业变量。使用私

2平台级(每个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="}}}] 

测试验证

#DevOps# #GitLab# #持续交付#

很赞哦!(66)