LXC: Is there a way to setup nameserver on container config?

时间:2015-06-15 15:20:26

标签: lxc

Is there a way to setup nameserver on LXC container config?

It seems like it's not ideal to modify /etc/network/interfaces inside a (Ubuntu) container when you want to setup a static ip. So I naturally guess that there is probably a way to setup nameserver on a container config, but I don't find the parameter, and I don't know if such thing exists.

Right now, what I do for a Ubuntu container is to setup nameserver on rootfs/etc/resolvconf/resolv.conf.d/base.

2 个答案:

答案 0 :(得分:1)

我使用LXD 3

例如,如果您的名称服务器是8.8.8.88.8.4.4,则只需运行此命令并重新启动容器即可。

lxc network set lxdbr0 raw.dnsmasq dhcp-option=6,8.8.8.8,8.8.4.4(6表示DNS配置)

然后在容器中尝试cat /etc/resolv.conf,您将看到这样的内容:

domain lxd
search lxd
nameserver 8.8.8.8
nameserver 8.8.4.4

答案 1 :(得分:0)

在使用静态IP时,我没有看到记录的lxc.net选项将nameserver添加到容器的接口。首先,考虑是否需要为每个容器配置自定义解析器配置,使用一个缓存来自主机的DNS解析器要容易得多。

蛮力方法:

如果你只有一个接口,你可以在容器的配置中使用hook: lxc.hook.pre-start=/var/lib/lxc/nameserver_set.sh

其中nameserver_set.sh类似于

#! /bin/bash
NAMESERVER=`cat /var/lib/lxc/${LXC_NAME}/nameserver`
echo "dns-nameserver $NAMESERVER" >> ${LXC_ROOTFS_PATH}/etc/network/interfaces

<强>迂回-DNS-方式: 你可以通过dhcp分配dns-nameserver和IP来解决这个问题: (看https://askubuntu.com/a/571095),

通过设置 LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf中的/etc/default/lxc-net
dhcp-hostsfile=/etc/lxc/dnsmasq-hosts.conf/etc/lxc/dnsmasq.conf

最后 raw.dnsmasq: dhcp-option=option:dns-server,8.8.8.8  在/var/lib/lxc/{container}/config

注意:根据您的主机,它可能需要或可能不需要更多配置,

为什么会这样?

在lxc1(不是lxd)下,似乎resolv.conf和/ etc / network / interfaces生成留给每个模板自行决定(例如ubuntu使用resolvconf,或通过debootstrap确定,fedora / centos复制主机resolv.conf,...),相同的接口,请参阅/usr/share/lxc/templates/lxc-ubuntu

但是,这也意味着您可以复制模板文件并根据品味进行自定义。 (只需记住在升级后进行比较 - 如果发生重大变化,它将会中断)

在lxd(lxc v2):下,似乎正在朝着使用cloud-init的方向发展,所以检查https://github.com/lxc/lxd/blob/master/doc/cloud-init.md,cloud-init的yaml似乎是一种很好的配置方式,但我没有太多使用它。