Я работаю над контейнерами в данный момент и испытываю затруднения настроить их для использования DHCP сети, так, чтобы к ним можно было получить доступ через имя хоста (контейнерное имя) непосредственно. Это будет означать, что приложения на других устройствах могут получить доступ к сервисам на контейнер, и если я хочу к SSH к контейнеру, я не нуждаюсь к во-первых SSH к хосту и использую lxc должностное лицо [containername] удар.
Мне удалось успешно создать контейнер Ubuntu 16.04, и он хорошо работает. Это работает в диапазоне IP, первоначально настроенном, когда я использовал lxd init хотя (10.0.1.*), однако, я хотел бы заставить их использовать диапазон IP основной сети и DHCP.
Мне удалось сделать это путем добавления к моему/etc/network/interfaces файлу следующего:
auto br0
iface br0 inet static
address 192.168.1.64
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.0.255
gateway 192.168.1.1
dns-nameservers 192.168.1.254
bridge_ports enp3s0
iface enp3s0 inet manual
После перезагрузки сетевого сервиса это хорошо работало, и контейнеры были видны в сети, и наоборот. Однако хост вместо этого потерял доступ к Интернету и не мог дольше видеть другие устройства в сети и наоборот.
Возвращение изменения предоставило доступ хост-машины к сети снова, однако, контейнеры, затем возвращенные к их исходному диапазону IP, и без видимости сети.
У меня было дальнейшее лужение, но ни к какому успеху, таким образом, я вернулся к хосту, имеющему Интернет и контейнеры, не видимые в данный момент; это не то, что я хочу.
Кто-либо может обеспечить дальнейшее понимание на то, где я, возможно, пошел не так, как надо? Я должен делать что-то совершенно другое?
Заранее спасибо.
Ну, в конце единственной вещью, которая, казалось, зафиксировала его, была новая установка ОС. Я теперь запускаю Ubuntu 17.10. Вместо обновления, я установил новый (но сделал изображение из моей старой установки, должен я нуждаться в нем).
Что касается/etc/network/interfaces файла, это было столь же просто как:
auto br0
iface br0 inet dhcp
bridge_ports enp3s0
iface enp3s0 inet manual
Что касается профиля lxd, это настроено как:
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: bridged
parent: br0
type: nic
name: default
Действительно не уверенный, почему это отказалось работать над 16.04.3 LTS, но по крайней мере это работает над 17,10.
Спасибо за справку так или иначе!
Именно так это все записано вместе, в моей установке все контейнеры и их хост-машина получают свой IP от того же сервера DHCP (мой маршрутизатор) и все доступны по LAN.
На Сервере Ubuntu 16,04 хостов, мой /etc/network/interfaces
чтения:
iface br0 inet dhcp
bridge_ports eth0
iface eth0 inet manual
Как я сказал в комментариях после перезапуска и когда сеть хоста работает, как предназначено, я думаю, что можно реконфигурировать сеть LXD (среди прочего) с sudo dpkg-reconfigure -p medium lxd
.
Когда я сделал lxd init
, Я ответил yes
кому: Do you want to configure the LXD bridge (yes/no)?
, затем сказанный его <No>
когда это попросило устанавливать сетевой мост, <Yes>
Я хотел бы использовать существующий, и br0
как имя моста.
Наконец, я полагаюсь на MAC для присвоения статического IP любой машине (включая хост и несколько контейнеров) в моем сервере DHCP (мой маршрутизатор) настройки. Это упрощает настройки в контейнерах и хосте.