Что такое ошибка "lookup registry-1.docker.io: no such host"?

Ошибка Docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io: no such host возникает, когда Docker не может разрешить DNS имя registry.

Причины возникновения

  • Проблемы с DNS сервером
  • Отсутствие интернет соединения
  • Блокировка firewall
  • Неправильная конфигурация сети
  • Проблемы с Docker daemon

Как отладить ошибку

  1. Проверь интернет соединение - ping google.com
  2. Проверь DNS - nslookup registry-1.docker.io
  3. Проверь firewall - iptables -L
  4. Проверь конфигурацию сети - ip route

Как исправить ошибку

1. Проверь DNS настройки

1# Проверь DNS серверы
2cat /etc/resolv.conf
3
4# Тест DNS резолюции
5nslookup registry-1.docker.io
6
7# Используй публичные DNS
8echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
9echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf

2. Настрой Docker DNS

1// /etc/docker/daemon.json
2{
3  "dns": ["8.8.8.8", "8.8.4.4"],
4  "dns-opts": ["ndots:1"]
5}

3. Перезапусти Docker daemon

1# Перезапусти Docker
2sudo systemctl restart docker
3
4# Проверь статус
5sudo systemctl status docker
6
7# Проверь конфигурацию
8docker info

4. Проверь firewall настройки

1# Проверь UFW статус
2sudo ufw status
3
4# Разреши Docker трафик
5sudo ufw allow 2375/tcp
6sudo ufw allow 2376/tcp
7
8# Или отключи firewall временно
9sudo ufw disable

5. Используй альтернативные registry

1# Настрой registry mirrors
2# В /etc/docker/daemon.json
3{
4  "registry-mirrors": [
5    "https://mirror.gcr.io",
6    "https://registry-1.docker.io"
7  ]
8}

6. Проверь прокси настройки

 1# Настрой прокси для Docker
 2export HTTP_PROXY="http://proxy.example.com:8080"
 3export HTTPS_PROXY="http://proxy.example.com:8080"
 4export NO_PROXY="localhost,127.0.0.1"
 5
 6# Или в daemon.json
 7{
 8  "proxies": {
 9    "http-proxy": "http://proxy.example.com:8080",
10    "https-proxy": "http://proxy.example.com:8080"
11  }
12}

Как мониторить подобные ошибки

  • Мониторь доступность DNS серверов
  • Проверяй интернет соединение
  • Настрой алерты на сетевые ошибки
  • Логируй все попытки доступа к registry

FAQ

В: Что делать, если DNS не работает?

О: Используй публичные DNS серверы (8.8.8.8, 8.8.4.4) или настрой локальный DNS.

В: Как настроить Docker за прокси?

О: Настрой переменные окружения HTTP_PROXY/HTTPS_PROXY или конфигурацию в daemon.json.

В: Что делать, если registry недоступен?

О: Используй registry mirrors или локальный registry для критичных образов.

Лучшие практики

  • Используй надежные DNS серверы
  • Настрой мониторинг сети
  • Используй registry mirrors
  • Документируй сетевую конфигурацию
  • Имей план B для критичных образов