docker - 使用自签名证书将本地 Docker 镜像推送到私有(private)存储库

标签 docker docker-registry openshift-origin

我正在尝试推送图像,例如 foo/bar ,从我的本地 Docker 注册表到在 OpenShift 3.11 上运行的注册表(实际上是 Minishift v1.33.0+ba29431)。

注册表位于 192.168.64.3:2376它需要 HTTPS 连接。它使用自签名证书。

首先,我复制新图像的标签:

docker tag foo/bar 192.168.64.3:2376/app/foo/bar

这成功了。然后我尝试插入:
$ docker push 192.168.64.3:2376/app/foo/bar
The push refers to repository [192.168.64.3:2376/app/foo/bar]
Get https://192.168.64.3:2376/v2/: x509: certificate signed by unknown authority

或者,当 Docker 配置为允许使用 192.168.64.0/24 中的不安全注册表时,它将 HTTP 与服务器通信,而不是禁用证书验证:
$ docker push 192.168.64.3:2376/app/foo/bar
The push refers to repository [192.168.64.3:2376/app/foo/bar]
Get http://192.168.64.3:2376/v2/: EOF

文档说,对于不安全的注册表,它应该“首先,尝试使用 HTTPS。如果 HTTPS 可用但证书无效,请忽略有关证书的错误。如果 HTTPS 不可用,则回退到 HTTP。”所以我不希望看到 EOF 错误。

我也不能尝试告诉 Docker 使用 Minishift 证书,因为它突然失去了与本地 Docker 守护进程通信的能力(它应该使用 Unix 域套接字,而不是 tcp://localhost:2376):
$ export DOCKER_TLS_VERIFY="1"
$ export DOCKER_CERT_PATH="/Users/rzg/.minishift/certs"
$ docker push 192.168.64.3:2376/app/foo/bar
Cannot connect to the Docker daemon at tcp://localhost:2376. Is the docker daemon running?

这是我正在使用的 Docker 版本:
Client: Docker Engine - Community
 Version:           18.09.2
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        6247962
 Built:             Sun Feb 10 04:12:39 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 04:13:06 2019
  OS/Arch:          linux/amd64
  Experimental:     false

最佳答案

根据文档:

您可以输入您的客户证书和 key

~/.docker/certs.d/<MyRegistry>:<Port>/client.cert





~/.docker/certs.d/<MyRegistry>:<Port>/client.key



https://docs.docker.com/docker-for-mac/faqs/#how-do-i-add-custom-ca-certificates

或者,您可以配置凭证存储并在那里加载证书,然后在 ~/.docker/config json 中配置存储

此处的文档:https://docs.docker.com/engine/reference/commandline/login/

关于docker - 使用自签名证书将本地 Docker 镜像推送到私有(private)存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56410114/

相关文章:

docker - 无法使用 docker plugin push 命令推送插件

Docker - 检查私有(private)注册表镜像版本

docker - Docker 中的默认私有(private)注册表

Openshift v3/Kubernetes 上的 ActiveMQ 集群发现

selenium - docker run -v bindmount 失败

docker - 从 x86 机器在 Docker 上运行 ARM CUDA 软件

kubernetes - 如何调试 "ImagePullBackOff"?

docker - Openshift Origin Docker 镜像制作准备好了吗?

ubuntu - 使用 docker 在 Ubuntu 上安装最新版本的 Mono

java - 如何修复 docker-compose 中 Jedis 中的连接被拒绝错误?