menu

1
Last Modified: 2022-09-18

登录 Login

  1. 我们可以使用以下命令去登录 private registry

    1
    2
    3
    
    docker login registry.example.com:5000 \ # 仓库名
    --username my_username \
    --password my_password # or --password-stdin
    
  2. 登录之后,Docker 会去把登录凭证存储在1

    • $HOME/.docker/config.json on Linux
    • %USERPROFILE%/.docker/config.json on Windows
  3. 存储凭证的方式:

    • keychain:更安全
    • Base64:将用户名和密码通过 Base64 编码,直接存储到 config.json 文件里

      ```json $ cat ~/.docker/config.json { "auths": { "registry.example.com:5000": { "auth": "(Base64 content from above)" «== echo -n "my_username:my_password" | base64 } } }

Case1: CICD platform

C1. GitLab

通过配置一个名为 DOCKER_AUTH_CONFIG 的 CI/CD variable ,就可以直接在 GitLab 里使用私有仓库了。2

DOCKER_AUTH_CONFIG 里需要填写 base64编码的登录凭证,根式如下:

1
2
3
4
5
6
7
{
    "auths": {
        "registry.example.com:5000": {
            "auth": "(Base64 content from above)"
        }
    }
}

配置完毕后,就可以像下面那样使用私有镜像。

1
2
3
4
5
6
7
8
#.gitlab-ci.yml
stages:
 - stage1


stage1:
	image: registry.example.com:5000/namespace/image:tag
	...

C2. GitHub Action

GitHub Action 的做法比较直观:3

1
2
3
4
5
6
7
8
9
10
11
12
13
jobs:
  build:
    container:
      image: octocat/ci-image:latest
      credentials:
        username: mona
        password: $
    services:
      db:
        image:  ghcr.io/octocat/testdb:latest
        credentials:
          username: $
          password: $

参考 References