【发布时间】:2019-06-01 20:14:00
【问题描述】:
我正在尝试将映像(例如 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
【问题讨论】:
标签: docker docker-registry openshift-origin