Профили
Чтобы сделать это правильно, вам необходимо настроить свой контейнер. Базовая конфигурация уже есть в вашей системе, если вы использовали обычный дистрибутив. Вы можете дополнительно настроить это с помощью команд, но большинство людей будут использовать файлы YAML. Основание обычно выглядит так, как показано ниже. Файл находится в / и т.д. / lxc / по умолчанию.conf.
lxc.сеть.0.type = vethlxc.сеть.0.ссылка = lxcbr0
lxc.сеть.0.flags = вверх
lxc.сеть.0.hwaddr = 00: 16: 3e: xx: xx: xx
Каждый контейнер следует настройкам в соответствии с профилем по умолчанию и файлом, указанным выше. Вы можете распечатать файл по умолчанию, как показано ниже. Для большей настройки лучше всего создать новые профили. Каждый профиль будет содержать некоторые детали конфигурации, в нашем случае сеть. Вы можете изменить любой параметр в своем контейнере с помощью профиля, и это имеет еще больший смысл, если вы хотите запускать его как локально, так и на платформе.
Профиль $ lxc показывает конфигурацию по умолчанию:описание: Профиль LXD по умолчанию
устройства:
eth0:
имя: eth0
сеть: lxdbr0
тип: nic
корень:
дорожка: /
бассейн: ros
тип: диск
имя: по умолчанию
использован:
- / 1.0 / экземпляры / guiapps
- / 1.0 / экземпляров / ff
В результате получается файл YAML. Все ваши профили будут в одном формате. С помощью самого LXC вы можете создавать, удалять и редактировать свой профиль. Вы можете видеть в файле, что по умолчанию используется сеть lxdbr0 и введите nic. Теперь создайте новый профиль, используя следующее:
Профиль $ lxc создать nicnetПеред запуском любого контейнера отредактируйте профиль:
$ lxc профиль редактировать nicnet
Вы используете формат YAML в файлах, которые создают эти профили. Обратите внимание, что имя «eth0» - это внутреннее имя контейнера. «Родитель» - это то, что есть в вашей системе, и вы проверяете это самостоятельно, используя:
$ ip aРаспечатка будет отличаться в зависимости от того, что у вас было раньше. Вы также должны знать, что вы можете выполнить соединение извне контейнера с помощью инструментов brctl.
Используя его в своем контейнере
После того, как вы создали профиль, вы хотите добавить его в свой контейнер. Это делается с помощью того же набора программ lxc. Во-первых, убедитесь, что у вас есть контейнер, в этом примере контейнер называется 'ff':
Профиль $ lxc добавить ff nicnetИзменение вступает в силу при перезапуске сети в контейнере. Самый простой и безопасный - всегда добавлять профили только в остановленные контейнеры.
Маршрутизировано
Мостовое соединение - это соединение, при котором ваш контейнер получает MAC-адрес на том же интерфейсе Ethernet, что и ваш хост. Это то, что вы сделали ранее в этом посте. С помощью еще нескольких приемов вы можете настроить маршрутизатор для присвоения контейнеру отдельного IP-адреса, и вы можете установить это в своем контейнере. Хотя при использовании macvlan могут возникнуть проблемы с использованием Wi-Fi. WPA / WPA2 не примет два адреса, поэтому ваш Wi-Fi сломается, так как ваш хост не будет использовать Wi-Fi.
В предыдущем примере используются инструменты brctl, поскольку lxc создал свои собственные. Он получает адрес от хоста, а не от маршрутизатора. При желании вы можете получить адрес на роутере. Опять же, только если вы используете проводное соединение или небезопасный Wi-Fi.
Когда вы убедились, что у вас есть сетевое соединение на вашем хосте, вы можете подключить его к своему контейнеру. Измените слово parent и установите свой nictype на macvlan.
config:описание: Настройка сетевого интерфейса
устройства:
eth0:
имя: eth0
nictype: macvlan
родитель: enp3s0
тип: nic
имя: Маршрут
использован:
- / 1.0 / экземпляры / guiapps
- / 1.0 / экземпляров / ff
Вам нужно будет убедиться, что родительское значение соответствует вашей конфигурации, поэтому убедитесь, что вы создаете его динамически. После этого вы можете запустить свой контейнер и найти его в списке назначений хоста вашего маршрутизатора. Ну, это интерфейсы, если говорить технически.
Рисунок 1. Контейнер теперь отображается в вашем маршрутизаторе
Мобильные профили
Интересной частью контейнеров Linux является то, что вы можете получить свои конфигурации и выгружать их в файлы YAML. Чтобы создать файлы для этого, вы запускаете опцию show в LXC, а затем перенаправляете в файл. Вывод соответствует стандарту YAML, и вы можете затем использовать эти файлы для их настройки в другом месте.
Профиль $ lxc показать Маршрут> Маршрут.ymlЧтобы использовать это для нового контейнера, используйте заданные значения. Обычно вы устанавливаете значение за раз, но у вас уже есть файл для этого.
$ lxc profile create newroute $ lxc profile set newroute user.сеть.config - < Route.ymlВы можете видеть, что вы должны поместить значения в пользовательское пространство имен.сеть.config '. Это важно знать, если вы хотите добавить другие значения, не связанные с сетью.
Заключение
Сеть с вашими контейнерами имеет множество опций, которые могут сбивать с толку, но, проведя небольшое исследование и тестирование самостоятельно, вы можете заставить его работать так, как вы хотите. Самое приятное то, что вы можете попробовать что-то одно, используя профили. Вы никогда не испортите свой текущий контейнер, просто удалите тот, который не работал, и добавьте старый. Этот метод работает для всего в контейнере.