要使用 Docker 在注册表中使用容器映像,请将注册表证书添加到 Docker 客户端。该证书用于在注册表登录期间对 Docker 进行身份验证。

将 Docker 客户端配置为与容器注册表(如 Harbor 注册表或 Docker Hub)进行交互。此示例假定使用的是 Harbor 主管服务

前提条件

此任务假设您使用的是安装了 Docker 守护进程的 Linux 主机 (Ubuntu)。要在 Ubuntu 主机上安装 Docker 引擎(守护进程),请参见https://docs.docker.com/engine/install/ubuntu/

要验证 Docker 是否已安装以及是否可以从 Docker hub 中提取映像,请运行以下命令:
docker run hello-world
预期结果:
Hello from Docker!
This message shows that your installation appears to be working correctly.
注: 已使用 Ubuntu 20.04 和 Docker 19.03 验证了这些说明。

过程

  1. 登录到 Harbor 注册表。
  2. 选择管理 > 配置 > 注册表根证书
  3. 单击下载以下载名为 ca.crt 的 Harbor 注册表证书。
    注: 如有必要,将证书的名称更改为 ca.crt
  4. ca.crt 文件安全地复制到 Docker Host Client。
  5. 在 Docker 主机上,使用 Harbor IP 地址为专用注册表创建目录路径。
    /etc/docker/certs.d/IP-address-or-FQDN-of-harbor/
    例如:
    mkdir /etc/docker/certs.d/10.179.145.77
  6. ca.crt 移动到此目录。
    例如:
     mv ca.crt /etc/docker/certs.d/10.179.145.77/ca.crt
  7. 重新启动 Docker 守护进程。
    sudo systemctl restart docker.service
  8. 使用 Docker 客户端登录嵌入式 Harbor 注册表。
    docker login https://10.179.145.77
    您可能会看到以下消息:
    WARNING! Your password will be stored unencrypted in /home/ubuntu/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    
    Login Succeeded