LINUX.ORG.RU
решено ФорумAdmin

Как общаться с LXC контейнером по имени?

 , ,


0

2

Привет всем!

Разбираюсь с LXC контейнерами. Хочу, чтобы в них жили nginx'ы. Их будет много, они будут появляться и удаляться. Хочется, чтобы с контейнером можно было работать по его имени. Пингануть, например или получить страничку с 80-го порта.
Сейчас «получается» только так:

ping: unknown host containername
Гугл мне подсказывает, что мне надо поставить внутри контейнера mDNS, типа avahi, тогда оно будет доступно по containername.local Но оно не ставится:
Setting up avahi-daemon (0.6.32~rc+dfsg-1ubuntu2) ...
Job for avahi-daemon.service failed because the control process exited with error code. See "systemctl status avahi-daemon.service" and "journalctl -xe" for details.
invoke-rc.d: initscript avahi-daemon, action "start" failed.
dpkg: error processing package avahi-daemon (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of libnss-mdns:amd64:
 libnss-mdns:amd64 depends on avahi-daemon (>= 0.6.16-1); however:
  Package avahi-daemon is not configured yet.

dpkg: error processing package libnss-mdns:amd64 (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 avahi-daemon
 libnss-mdns:amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)
И не очень понятно, почему так.
# systemctl status avahi-daemon.service
● avahi-daemon.service - Avahi mDNS/DNS-SD Stack
   Loaded: loaded (/lib/systemd/system/avahi-daemon.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2016-11-12 21:00:50 UTC; 9min ago
  Process: 342 ExecStart=/usr/sbin/avahi-daemon -s (code=exited, status=255)
 Main PID: 342 (code=exited, status=255)

Nov 12 21:00:50 misterelitru systemd[1]: Starting Avahi mDNS/DNS-SD Stack...
Nov 12 21:00:50 misterelitru avahi-daemon[342]: Found user 'avahi' (UID 109) and group 'avahi' (GID 113).
Nov 12 21:00:50 misterelitru systemd[1]: avahi-daemon.service: Main process exited, code=exited, status=255/n/a
Nov 12 21:00:50 misterelitru systemd[1]: Failed to start Avahi mDNS/DNS-SD Stack.
Nov 12 21:00:50 misterelitru systemd[1]: avahi-daemon.service: Unit entered failed state.
Nov 12 21:00:50 misterelitru systemd[1]: avahi-daemon.service: Failed with result 'exit-code'.
# avahi-daemon 
Found user 'avahi' (UID 109) and group 'avahi' (GID 113).
Successfully dropped root privileges.
chroot.c: fork() failed: Resource temporarily unavailable
failed to start chroot() helper daemon.
Не знаю, к чему тут чрут. Как лучше решить эту задачу?
Ubuntu 16.04
Спасибо!

★★★★★

Последнее исправление: ls-h (всего исправлений: 1)

Проблема решена. И так, чтобы был доступ к контейнерам по имени, а не только по IP адресам, нужно:

1. В /etc/default/lxc-net раскомментировать #LXC_DOMAIN=«lxc»
2. Добавить строчку server=/lxc/10.0.3.1 в конфиг dnsmasq.
Я добавил это в /etc/dnsmasq.d/lxc и сделал с него симлинк в /etc/NetworkManager/dnsmasq.d/lxc. Не уверен, что это стопроцентно правильное решение, но НетворкМанагер запуская dnsmasq ссылается на конфиг по последнему пути, однако там было пусто, а по первому пути уже было до меня что-то написано. Я решил, что это одно и тоже и симлинкнул.
3. Выполнить service network-manager restart и service lxc-net restart

Теперь контейнеры доступны по containername.lxc.
Всем спасибо!

ls-h ★★★★★
() автор топика
Ответ на: комментарий от ls-h

P.S.: Никакую аваху внутрь контейнеров ставить не нужно.

ls-h ★★★★★
() автор топика
Последнее исправление: ls-h (всего исправлений: 1)
29 июля 2017 г.
Ответ на: комментарий от ls-h

Решил поделиться

Так же проблема. Debian 9, lxc, lxc-net, dnsmasq-base

Мне помогло следующее:

1. В /etc/default/lxc-net добавил LXC_DOMAIN=«lxc»

2. echo 'nameserver 10.0.3.1' >> /etc/resolv.conf

IP взял тут: ps ax | grep dnsmasq (--listen-address 10.0.3.1)

3. systemctl restart networking.service

В конфиг dnsmasq ничего не добавлял.

sMax
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.