Тревожной новостью этой недели стала блокировка пользователей из России ресурсом Dcoker Hub. Блокировка осуществляется по Geo IP.
Справиться с этой проблемой нам поможет сам же docker, который имеет соответствующие инструменты.
Что мы видим?
root@nvServer:~# docker pull alpine:latest
Error response from daemon: pull access denied for alpine, repository does not exist or may require ‘docker login’: denied: < h1>403 Forbidden Since Docker is a US company, we must comply with US export control regulations. In an effort to comply with these, we now block all IP a ddresses that are located in Cuba, Iran, North Korea, Republic of Crimea, Sudan, and Syria. If you are not in one of these cities, countr ies, or regions and are blocked, please reach out to https://hub.docker.com/support/contact/
Похожие ответы сейчас получают пользователи из России.
root@nvServer:~# curl -I https://hub.docker.com HTTP/1.0 403 Forbidden cache-control: no-cache content-type: text/html
Одним из способов решить эту проблему является использование proxy, который подключается через Tor.
Вам потребуется рабочий HTTP или SOCKS proxy. Информация по настройке взята из инструкции Configure the daemon with systemd с официального сайта.
Кратко
sudo -i # Создать каталог mkdir -p /etc/systemd/system/docker.service.d # Создать файл /etc/systemd/system/docker.service.d/http-proxy.conf mcedit /etc/systemd/system/docker.service.d/http-proxy.conf # В файл добавить текст [Service] Environment="HTTP_PROXY=http://proxy.myserver.ru:8118" Environment="HTTPS_PROXY=http://proxy.myserver.ru:8118" # Обновить systemd и перезапустить docker sudo systemctl daemon-reload sudo systemctl restart docker # Проверить настройки systemctl show --property=Environment docker
Подробно
1. Создать файл настроек docker.service
sudo -i # Создать каталог mkdir -p /etc/systemd/system/docker.service.d # Создать файл /etc/systemd/system/docker.service.d/http-proxy.conf mcedit /etc/systemd/system/docker.service.d/http-proxy.conf
2. В файл http-proxy.conf вставить текст
[Service] Environment="HTTP_PROXY=http://proxy.myserver.ru:8118" Environment="HTTPS_PROXY=http://proxy.myserver.ru:8118"
Вместо proxy.myserver.ru укажите доступный proxy сервер.
3. Обновляем systemd и перезапускаем docker
sudo systemctl daemon-reload sudo systemctl restart docker
4. Проверяем, что настройки применились:
root@nvServer:~# systemctl show --property=Environment docker Environment=HTTP_PROXY=http://proxy.myserver.ru:8118 HTTPS_PROXY=http://proxy.myserver.ru:8118
5. Проверяем, что docker pull работает
root@nvServer:~# docker pull alpine:latest latest: Pulling from library/alpine d25f557d7f31: Pull complete Digest: sha256:77726ef6b57ddf65bb551896826ec38bc3e53f75cdde31354fbffb4f25238ebd Status: Downloaded newer image for alpine:latest docker.io/library/alpine:latest