Я постоянно получаю ошибку 404 при попытке перейти в мой личный репозиторий. Почему?


Я сделал реестр именно так, как он говорит в документации docker, и по какой-то причине всякий раз, когда я пытаюсь протолкнуть в него изображение, он выдает мне ошибку 404.

Вот ошибка Error: Status 404 trying to push repository stelasite: "404 page not foundn"

А на стороне сервера это 11/8/2015 6:33:00 PM173.12.71.226 - - [08/Nov/2015:23:33:00 +0000] "GET /v2/ HTTP/1.1" 401 87 "" "docker/1.8.2-fc22 go/go1.5.1 kernel/4.2.3-200.fc22.x86_64 os/linux arch/amd64" 11/8/2015 6:33:05 PM173.12.71.226 - - [08/Nov/2015:23:33:05 +0000] "PUT /v1/repositories/stelasite/ HTTP/1.1" 404 19 "" "docker/1.8.2-fc22 go/go1.5.1 kernel/4.2.3-200.fc22.x86_64 os/linux arch/amd64"

У кого-нибудь есть хоть малейшее представление о том, что происходит? По-видимому, он не может подключиться к api v1, но я не знаю, почему docker cli даже попытается это сделать.
2 4

2 ответа:

У меня была та же проблема, и я решил ее, приведя в порядок свою локальную среду докеров.

Причиной моей проблемы было либо то, что мой клиент Docker был слишком стар, либо то, что у меня было несоответствие в версии docker между моим клиентом Docker (1.7.1) и виртуальной машиной docker-machine (1.8.1). У меня было несоответствие версий, потому что я создал виртуальную машину, а затем понизил свой клиент docker. Журналы доступа в реестре сказали, что клиент был 1.8.1, хотя моя хост-система имела 1.7.1. Я удалил виртуальную машину docker-machine (docker-machine rm <environment name>), затем деинсталлировал docker и повторно установил 1.10.0 через Homebrew.

Если вы используете несколько реестров Docker за балансировщиком нагрузки, еще одна вещь, которая может вызвать проблемы с выталкиванием, - это несоответствие в секретах HTTP. Вам нужно будет явно установить их все на одно и то же, используя либо переменную окружения REGISTRY_HTTP_SECRET, либо вот так в файле конфигурации:

http:
    secret: mysecret

Я видел сообщение в блоге от 2013 года, в котором утверждалось, что секрет должен быть длиной 64 символа, но я не вижу этого в docs

У меня была та же ошибка, когда машина реестра отвечала очень медленно. В моем случае это была проблема с одним из dns-серверов.

Изменение DNS-сервера, снова нажимаем работы. Вы можете проверить его, вызвав сервер распространения и посмотреть, очень ли медленно он отвечает или разрешает имя хоста.

Если вы запускаете docker с --debug, это вывод из журналов:

DEBU[0013] Calling POST /images/{name:.*}/push
INFO[0013] POST /v1.20/images/docker-distribution.company.net:5000/nginx/push?tag=
DEBU[0023] hostDir: /etc/docker/certs.d/docker-distribution.company.net:5000
DEBU[0033] Trying to push docker-distribution.company.net:5000/nginx to https://docker-distribution.company.net:5000 v2
DEBU[0038] Error getting v2 registry: Get https://docker-distribution.company.net:5000/v2/: net/http: request canceled while waiting for connection
DEBU[0038] Trying to push docker-distribution.company.net:5000/nginx to https://docker-distribution.company.net:5000 v1
DEBU[0038] hostDir: /etc/docker/certs.d/docker-distribution.company.net:5000
DEBU[0038] attempting v2 ping for registry endpoint https://docker-distribution.company.net:5000/v2/
DEBU[0043] Endpoint https://docker-distribution.company.net:5000/v2/ is eligible for private registry. Enabling decorator.

Вы можете видеть, что ошибка "запрос отменен во время ожидания соединения".