Вопрос или проблема
Я пытаюсь настроить lxd, и команда lxd init
говорит мне, что сеть lxdbr0 уже установлена. Я пытаюсь понять, откуда это происходит.
Я на ноутбуке с Windows 11, провожу некоторые эксперименты. Я устанавливаю чистую виртуальную машину Ubuntu с помощью wsl --install Ubuntu-22.04
. Затем я устанавливаю net-tools, чтобы получить доступ к команде ifconfig. Эта команда показывает lxdbr0!
Я не устанавливал lxd или lxc, и я подтверждаю это, пробуя эти команды. dpkg -l|grep lxd
и snap list|grep lxd
ничего не показывают. Странно, но dmesg|grep lxd
показывает много результатов, а это вывод команды systemctl|grep lxd
:
systemctl | grep lxd
sys-devices-virtual-net-lxdbr0.device
загружено активно подключено /sys/devices/virtual/net/lxdbr0
sys-subsystem-net-devices-lxdbr0.device
загружено активно подключено /sys/subsystem/net/devices/lxdbr0
Как lxdbr0 устанавливается? Я хотел бы придерживаться значений по умолчанию для lxd init
насколько это возможно, и это мешает моей настройке.
Я просто хочу создать большое количество виртуальных Ubuntu-боксов, и, похоже, контейнеры lxd — это самый эффективный путь. Я хочу, чтобы эти боксы имели доступ к вебу и могли взаимодействовать друг с другом, чтобы я мог экспериментировать с различным программным обеспечением для кластеризации. Я программист, а не сетевой специалист или администратор, поэтому мне не интересно, почему это происходит, только как это обойти и запустить мои контейнеры.
Ответ или решение
lxdbr0 – это виртуальный интерфейс, который создается LXD (Linux Container Daemon) для обеспечения сетевого взаимодействия контейнеров. Ваша ситуация, в которой вы наблюдаете наличие lxdbr0 на свежем установочном образе Ubuntu 22.04 в WSL2, может вызывать некоторые недоумения. Давайте разберем вопрос подробнее.
Причины появления lxdbr0 в WSL2 Ubuntu
-
WSL и Virtualization: WSL2 (Windows Subsystem for Linux 2) использует технологию виртуализации, которая позволяет Linux-дистрибутивам иметь более высокий уровень совместимости с настоящими Linux-системами. В отличие от WSL1, в WSL2 используется полноценный ядро Linux и поддержка сетевых интерфейсов, таких как lxdbr0.
-
Установленные зависимости: Несмотря на то, что вы не устанавливали LXD напрямую, существуют предпосылки, что некоторые пакеты, которые включены в дистрибутив Ubuntu, могут иметь зависимости от LXD. Некоторые утилиты или компоненты, предустановленные в Ubuntu, могут автоматически создавать интерфейс lxdbr0 как часть своей конфигурации.
-
Kernel Features: В определенных конфигурациях ядра, поддерживающих контейнеризацию, могут инициироваться сетевые интерфейсы, такие как lxdbr0, даже если пользователь не устанавливает LXD. Фактически, это поведение может происходить из-за того, как обработаны пользовательские сети в вашей версии Ubuntu.
Что делать дальше?
Если вы не хотите использовать lxdbr0 и желаете провести инициализацию LXD, вам необходимо переходить на обходные пути. Учитывая ваши цели – созданию множества контейнеров, обеспечивающих взаимодействие между собой и доступ к интернету, — вот несколько шагов, которые вы можете предпринять:
-
Удаление интерфейса lxdbr0: Если вы хотите начать с чистого листа, вы можете удалить lxdbr0. Однако это может потенциально нарушить работу LXD или текущих настроек, так что будьте осторожны:
sudo ip link delete lxdbr0
-
Настройка LXD без lxdbr0: Вы можете настроить LXD для использования других сетевых интерфейсов или режимов сети (например, мостового подключения или NAT) в процессе инициализации с помощью команды
lxd init
. Выберите «none» для использования сети, предоставленной вами:lxd init
-
Использование альтернативных адресов: Если вам нужно, чтобы ваши контейнеры могли взаимодействовать друг с другом, вы также можете рассмотреть возможность создания пользовательских мостов или конфигураций DHCP в зависимости от архитектуры вашего приложения.
Заключение
Работа с lxdbr0 в WSL2 версиях Ubuntu может показаться запутанным моментом, но это поведение связано с особенностями виртуализации под управлением Windows и встраиванием LXD. Помните, что выбор сетевых решений, соответствующих вашим задачам, является процессом, в котором предусмотрены различные нюансы. Следуя вышеописанным рекомендациям, вы сможете успешно реализовать ваши проекты, полагаясь на LXD для управления контейнерами.