Я пытаюсь отправить изображение, скажем 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