DockerHub 403

DockerHub 403

От gulyshart для @docker_ru


Настройка альтернативных репозиториев, зеркал.
Способ поднять собственный docker proxy-registry до dockerhub

Картинка для привлечения внимания

Как настроиться на альтернативные зеркала

Открываем настройки демона докера

nano /etc/docker/daemon.json

И добавляем рабочее зеркало, например gcr.io

{ 
"registry-mirrors": ["https://mirror.gcr.io"]
}

И рестарт

service docker restart


У вас также может быть заблокирован gcr, если вы подключаетесь по IPv6.

Еще парочка зеркал:

– https://docker.mirrors.ustc.edu.cn

– https://registry.docker-cn.com

– https://cr.yandex/mirror/ (нельзя добавить в daemon.json; не все образы)


Полюбился сообществу, прокси до docker-hub

- https://huecker.io

Нахе

Также, вы можете реализовать собственный docker-registry proxy на Sonatype Nexus

- https://help.sonatype.com/en/proxy-repository-for-docker.html


Непроверенные, но возможные зеркала

На свой страх и риск


- https://mirror.gcr.io

- https://ghcr.io

- https://mcr.microsoft.com

- https://public.ecr.aws

- https://daocloud.io

- https://registry.docker-cn.com

- https://c.163.com

- https://er-central-1.mirror.aliunc.com

- https://docker.mirrors.ustc.edu.cn


Добавление всех в одну строку

На свой страх, риск и ментальное здоровье

{
"registry-mirrors" : ["https://huecker.io", "https://yandex.cr/mirror/", "https://mirror.gcr.io", "https://ghcr.io", "https://gcr.io", "https://mcr.microsoft.com", "https://public.ecr.aws", "https://daocloud.io", "https://registry.docker-cn.com", "https://c.163.com", "https://eu-central-1.mirror.aliyuncs.com", "https://docker.mirrors.ustc.edu.cn"]
}

Второй вариант добавления зеркала:

nano /etc/sysconfig/docker

OPTIONS='--selinux-enabled --log-driver=journald --registry-mirror=<MIRROR>'


Как сделать собственный proxy-registry


Было много разных способов, но самый эффективный признали Кеширующий-прокси-репозиторий. Который бы хранил свои образы и мог подтягивать их из других репозиториев.

Чудо в том, что таковым является Sonatype Nexus

- https://help.sonatype.com/en/proxy-repository-for-docker.html


Инструкция фастом, для тех, кто знает.

Идею сувать Nginx, Certbot, Nexus в docker-compose, я отложу. Поднимем в docker-compose мы только Nexus. Ибо проще, быстрее. Серфтификаты вы получите уже сами, как и обвязку вокруг

# docker-compose.yml
version: "3"
services:
   nexus_registry:
     container_name: nexus_registry
     image: sonatype/nexus3
     ports: 
       - "8081:8081" # Для сайта
       - "8082:8082" # Для Docker proxy-registry
     volumes:
       - "./data/nexus:/opt/sonatype/sonatype-work:rw"

Если жалуется на права, просто дай их

chmod 777 ./data/nexus

(Есть риск воспламенения соседнего админа, за такое пробрасывание прав)

Поднимаем сервис

docker-compose up -d

Получаем пароль от админки:

echo "admin password | $(cat data/nexus/nexus3/admin.password)"

Если не сработало, задумайся, но можешь попробовать сделать так

docker exec -it nexus_registry cat sonatype-work/nexus3/admin.password ; echo " "

Если ты настроил обвязку из nginx, certbot, заходи по обвязке. Тем, кто повторяет

Если делаешь на удалённом сервере, то как зайти найдёшь введя

echo "http://$(curl ifconfig.io):8081"

Если настраиваешь на своей системе, то http://localhost:8081

Логинишься. По дефолту User: admin, пароль ты знаешь.
Пройдёшь настроку. А дальше




  • Устанавливаем флаг HTTP и указываем желаемый порт (У автора 8082)
  • Устанавливаем флаг «Allow anonymous docker pull»
  • Устанавливаем флаг «Enable Docker V1 API» (Для легаси)
  • В поле Remote storage указываем: https://registry-1.docker.io
  • Docker Index: устанавливаем в положение «Use Docker Hub»
  • Устанавливаем флаг «Allow Nexus Repositpry Manager to download and cache foreign layers»

Поздравляю, прокси настроено. Включи токены. Делай пулл и дыши спокойно


От автора конфиг на nginx.

И на последок. Можешь писать автору, какой он неправильный, что он сделал не так и как бы ты сделал лучше и вообще слишком сложно для простого и слишком просто для сложного и как он не полно и что ещё есть. Вместе посмеёмся.

Всех солнышек с 30 мая 2024. Прощайте

server {
 server_name <DOMAIN_REPLACE_ME>;
 
 listen 443 ssl; 
 ssl_certificate /etc/letsencrypt/live/<DOMAIN_REPLACE_ME>/fullchain.pem; 
 ssl_certificate_key /etc/letsencrypt/live/<DOMAIN_REPLACE_ME>/privkey.pem; 
 include /etc/letsencrypt/options-ssl-nginx.conf; 
 ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; 

  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
 


 location / {
   proxy_pass http://localhost:8081/;
 }

 location /v2/ {
   proxy_pass http://localhost:8082/v2/;
 }



}

server {
   listen 80;      
    server_name <DOMAIN_REPLACE_ME>;
   if ($host = <DOMAIN_REPLACE_ME>) {
       return 301 https://$host$request_uri;
   } 
}


Видео по статье. Так на всякий


Report Page