Вопрос:
Я использовал свой требуемый для авторизации личный реестр Docker в качестве зеркала реестра Docker, но получаю ошибку аутентификации (у меня есть успешный вход в мой личный реестр).
Весь мой шаг ниже:
1.Успешный вход в мой личный реестр докеров nexus3
1) Когда я запускаю docker, тяну docker.mydomain.com/myPrivateDocker:latest без входа в систему, мне нужно войти в систему докера (myPrivateDocker создан мной).
2) И затем я вхожу в свой личный реестр докеров nexus3 https://docker.mydomain.com рис. Успешного входа в систему
3) Я использую docker pull docker.mydomain.com/myPrivateDocker: последний успех сейчас.
2.Когда я добавляю зеркала регистрации в докер, но не могу выполнить аутентификацию
1).Потому что каждый раз тянуть с docker.mydomain.com/myPrivateDocker:latest не очень хорошо. Поэтому я устанавливаю зеркала реестра docker на / etc / docker / daemon с
"registry-mirrors": ["https://docker.mydomain.com"],
, а затем перезапускаю мой демон и докер.когда я использую информацию о Docker, я вижу, что мои зеркала реестра были правильными.
Информация об успешном соединении с зеркалами реестра
2) Но когда я хочу использовать Docker pullmyPrivateDocker: последнее с ошибкой ниже:
$ docker pull myPrivateDocker:latest
Error response from daemon: Get https://registry-1.docker.io/v2/library/nginx/manifests/latest: unauthorized: incorrect username or password
Я вхожу в свой личный реестр успешно сейчас. Эта ошибка меня долго озадачивала. И я захожу, чтобы посмотреть мои журналы nginx и получить ошибку с помощью auth.Nginx logs можетопределенно, что мой запрос на извлечение является запросом к моей https://docker.domain.com.So настройке зеркала, теперь выполняется эффективно.
Но ошибка nginx с аутентификацией:
"GET /v2/token?scope=repository%3Alibrary%2Fnexus%3Apull&service=https%3A%2F%2Fdocker.mirrors.feibor.com%2Fv2%2Ftoken HTTP/1.1" 200 60 "-" "docker/18.09.2 go/go1.10.6 git-commit/6247962 kernel/4.9.125-linuxkit os/linux arch/amd64 UpstreamClient(Docker-Client/18.09.2 \x5C(darwin\x5C))"
1.203.182.115 - - [09/Jun/2019:14:08:15 +0800]
"GET /v2/library/nexus/manifests/3.16.2-3 HTTP/1.1" 401 113 "-" "docker/18.09.2 go/go1.10.6 git-commit/6247962 kernel/4.9.125-linuxkit os/linux arch/amd64 UpstreamClient(Docker-Client/18.09.2 \x5C(darwin\x5C))"
Тогда яобнаружил, что в моем URL запроса нет имени учетной записи.Я когда-либо использую общедоступное зеркало докера без аутентификации и могу использовать очень хорошо. Но никогда не использую приватное зеркало реестра докера, что я могу с этим сделать?Я не хочу использовать очень длинное имя для извлечения моих изображений, например docker pull docker.mydomain.com/myPrivateDocker:latest.
Моя конфигурация nginx:
server{
listen 443;
server_name docker.mydomain.com;
client_max_body_size 1G;
proxy_buffering off;
keepalive_timeout 5 5;
tcp_nodelay on;
ssl on;
ssl_certificate /root/ssl_ca/docker.xxxx.com.pem;xx
ssl_certificate_key /root/ssl_ca/docker.xxxx.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_pass http://localhost:7719;
}
location /v1/search {
auth_basic off;
proxy_pass http://localhost:7719;
}