Почему в контейнере интернет / apt может не работать

В обычной системе (не в контейнере) всё обычно работает «из коробки», потому что там сеть настраивается автоматически.

В контейнере всё немного по-другому:

  1. Контейнер получает интернет через хост-машину (компьютер, на котором запущен Incus).
  2. DNS (то, что превращает google.com в IP-адрес) тоже должен приходить от хоста.
  3. Очень часто в новых Debian/Ubuntu внутри контейнера включается штука под названием systemd-resolved — она пытается сама настроить DNS, но в контейнере у неё это получается плохо или вообще не получается.
  4. В итоге в файле /etc/resolv.conf оказывается либо пусто, либо только строка nameserver 127.0.0.53, либо вообще ничего полезного → интернет не работает, apt update зависает или очень медленно идёт.

Это одна из самых частых проблем у новичков с контейнерами.

Самый простой и надёжный способ исправить (для большинства случаев)

Зайдите в контейнер и выполните эти 4 команды подряд:

# 1. Отключаем систему, которая мешает
systemctl disable --now systemd-resolved

# 2. Удаляем старый (неправильный) файл
rm -f /etc/resolv.conf

# 3. Создаём нормальный файл с публичными DNS-серверами
echo "nameserver 8.8.8.8"     > /etc/resolv.conf
echo "nameserver 1.1.1.1"    >> /etc/resolv.conf

# 4. (опционально) Защищаем файл от перезаписи
chattr +i /etc/resolv.conf

После этого сразу попробуйте:

ping 8.8.8.8
ping google.com
apt update

Должно заработать почти мгновенно.

Почему именно эти DNS-сервера

  • 8.8.8.8 → Google Public DNS
  • 1.1.1.1 → Cloudflare DNS

Они быстрые, надёжные, находятся по всему миру и почти никогда не падают.

Что будет после перезагрузки контейнера?

Если вы не поставили chattr +i, то после перезапуска контейнера файл /etc/resolv.conf может снова стать неправильным.

Тогда просто повторите команды 1–3 заново (или сделайте маленький скрипт, который запускается при старте).

Короткая памятка (скопируйте и сохраните)

# Быстрый фикс DNS в контейнере Debian/Ubuntu
systemctl disable --now systemd-resolved
rm -f /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 1.1.1.1" >> /etc/resolv.conf
# Чтобы не слетало после перезагрузки:
chmod 644 /etc/resolv.conf

# Проверка
ping google.com
apt update

Теперь интернет должен работать стабильно.