Я постоянно получаю ошибку 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"
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.
Вы можете видеть, что ошибка "запрос отменен во время ожидания соединения".