如果是在vm或者物理机上注册的docker类型executor的runner,在本机执行dockerlogin后就可以了。但是现在是通过docker运行gitlabrunner,使用docker类型的executor。此时,我们需要在项目或Runner中配置镜像仓库的认证信息。注意:如果提前将镜像下载到本地供跑者使用,会比每次都下载要快。如果不存在,您可以设置镜像拉取策略。首先,我们用docker启动runner,注册executor类型为docker的runner,并启动runner。##registerdockerrun-itd--rm-v/data/devops/gitlab-runner/config:/etc/gitlab-runnergitlab/gitlab-runner:v12.9.0register\--non-interactive\--执行器“docker”\--url"http://gitlab.idevops.site/"\--registration-token"4qCqD8pEoLzvgzzVn5oy"\--description"devops-runner"\--tag-list"build,deploy"\--run-untagged="true"\--locked="false"\--docker-imagealpine:latest\--access-level="not_protected"##运行dockerrun-itd\--namegitlab-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平台级别(每个运行器):要配置运行器以便其所有作业都可以访问私有注册表,请将DOCKER_AUTH_CONFIG添加到运行器配置中的环境变量中。获取凭证信息使用dockerlogin生成dockerloginregistry.example.com:5000--usernamemy_username--passwordmy_password然后复制~/.docker/config.json的内容。[root@zeyang-nuc-serviceconfig]#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#ExamplebXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=#Format{"auths":{"registry.example.com:5000":{"auth":"(Base64contentfromabove)"}}}配置凭证信息格式化数据:{"auths":{"192.168.1.200:8088":{"auth":"YWRtaW46SGFyYm9yMTIzNDU="}}项目级配置将认证信息存储为项目或ci文件阶段的变量:-testvariables:DOCKER_AUTH_CONFIG:'{"auths":{"192.168.1.200:8088":{"auth":"YWRtaW46SGFyYm9yMTIzNDU="}}}'test:stage:testtags:-buildimage:192.168.1.200:8088/spinnaker01/spinnaker01-nginx-demo:RELEASE-1.1.1script:-sleep20系统级配置将身份验证信息存储为runner配置文件中的变量[[runners]]environment=['DOCKER_AUTH_CONFIG={"auths":{"192.168.1.200:8088":{"auth":"YWRtaW46SGFyYm9yMTIzNDU="}}}']测试验证#DevOps##GitLab##continuousdelivery#
