无法从 Docker 本地不安全注册表中提取图像:http: 服务器向 HTTPS 客户端提供 HTTP 响应

Failed to pull image from Docker local insecure registry: http: server gave HTTP response to HTTPS client

当我尝试在同一服务器(主节点)上使用私有 Docker 注册表中的图像在 Kubernetes 中部署应用程序时,我收到以下错误:

Failed to pull image "0.0.0.0:5000/continuous-delivery-tutorial:5ec98331a69ec5e6f818583d4506d361ff4de89b-2020-02-12-14-37-03": rpc error: code = Unknown desc = Error response from daemon: Get https://0.0.0.0:5000/v2/: http: server gave HTTP response to HTTPS client

当我打印 docker system info 时,我可以看到我的注册表是不安全的注册表:

我通过以下命令 运行 我的注册表:

docker run -d -p 5000:5000 --restart=always --name registry -v $PWD/docker_reg_certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key registry:2

感谢您的任何建议

您需要将您的主机名添加到 /etc/docker/daemon.json 中允许的不安全注册表列表中,例如:

{
  "insecure-registries" : ["your-computer-hostname:5000"]
}

(此文件应该包含 1 个 json 对象,因此如果它不为空,则将 insecure-registries 属性 添加到现有对象而不是创建新对象。还要记住之后重新启动 docker 守护进程)

此外,您不应使用 0.0.0.0,因为它不是真实地址。在指定图像时使用您的主机名,例如 your-computer-hostname:5000/continuous-delivery-tutorial:5ec98331a69ec5e6f818583d4506d361ff4de89b-2020-02-12-14-37-03