Назад | Перейти на главную страницу

Как установить IP-адреса DHCP для стандартных контейнеров LXC?

Когда вы создаете на хосте несколько контейнеров, например:

sudo lxc-create -n container1 -t ubuntu
sudo lxc-create -n container2 -t ubuntu

система LXC создает IP-адреса для хостов в новой подсети, например

lxc-ls --fancy
NAME            STATE    IPV4        IPV6  AUTOSTART
----------------------------------------------------
container1  RUNNING  10.0.3.143  -     NO
container2  RUNNING  10.0.3.12   -     NO

Вопрос в том, где находится служба DHCP, которая выделяет эти адреса, и как мы можем выделить фиксированный IP-адрес на основе имени сервера или MAC-адреса?

Мы пробовали редактировать /etc/lxc/default.conf и добавив:

    dhcp-host=container1,10.0.3.10
    dhcp-host=container2,10.0.3.20

Затем остановка и запуск контейнеров и выполнение sudo service lxc-net restart но это не подействовало. Я мог редактировать /etc/network/interfaces для каждого контейнера и жестко запрограммировать IP вместо использования DHCP, но я бы предпочел управлять им централизованно.

Есть ли способ сделать это?

Хорошо, нашел другой способ сделать это, который работает:

  1. Остановить все контейнеры
  2. Отредактируйте / etc / default / lxc-net
  3. раскомментируйте "LXC_DHCP_CONFILE = / etc / lxc / dnsmasq.conf"
  4. создайте файл /etc/lxc/dnsmasq.conf
  5. отредактируйте dnsmasq.conf:

    dhcp-host = имя_контейнера, 10.0.2.10

  6. перезапуск службы lxc-net

Теперь перезапустите контейнеры и наслаждайтесь славой собственных IP-адресов.

-- РЕДАКТИРОВАТЬ --

Слишком рано заговорил - работает только половина.

Всего 4 контейнера, и в dnsmasq.conf у меня есть:

dhcp-host=host01,10.0.2.10
dhcp-host=host02,10.0.2.20
dhcp-host=host03,10.0.2.30
dhcp-host=host04,10.0.2.40

Теперь, когда я перезапускаю все, включая контейнеры, я получаю следующее:

# lxc-ls --fancy
NAME       STATE    IPV4        IPV6  AUTOSTART
-----------------------------------------------
host01    RUNNING  10.0.2.99   -     YES
host02    RUNNING  10.0.2.20   -     YES
host03    RUNNING  10.0.2.198  -     YES
host04    RUNNING  10.0.2.40   -     YES

Половина из них была правильной. Все контейнеры мы создавали одинаково и никак не редактировались.

У кого-нибудь есть идеи, что происходит?

Это содержимое / etc / network / interfaces одного из контейнеров-нарушителей:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

Ничего отличного от рабочих.

- РЕДАКТИРОВАТЬ 2 ---

остановив все контейнеры, а затем запустите это:

$ sudo restart lxc-net

Исправлена ​​проблема!