📅  最后修改于: 2023-12-03 14:39:19.078000             🧑  作者: Mango
在LXC容器中使用apt
命令安装软件包时会出现明显的延迟,比在宿主机上安装要慢得多。这是因为默认情况下,LXC容器使用宿主机的DNS服务器,如果DNS服务器不是很快,那么就会导致apt
命令慢。
/etc/resolv.conf
文件我们可以尝试手动修改LXC容器中的/etc/resolv.conf
文件,将其中的DNS服务器地址设置为一个较快的公共DNS服务器。例如,使用谷歌的公共DNS服务器(8.8.8.8和8.8.4.4):
echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
这样,在LXC容器中运行apt
命令就会更快了。
另一种方法是在LXC容器的配置文件(通常位于/var/lib/lxc/<container_name>/config
)中指定DNS服务器地址。在配置文件中找到类似于以下内容的行:
lxc.network.ipv4 = 10.0.3.10/24
在该行下面添加以下内容:
lxc.network.ipv4.gateway = 10.0.3.1
lxc.network.ipv4.nameserver = 8.8.8.8 8.8.4.4
然后重启LXC容器,修改后的DNS服务器地址就会生效了。
最后,我们可以使用dnsmasq将LXC容器中的DNS查询转发到宿主机中运行的dnsmasq节点。为此,我们需要在宿主机上安装dnsmasq,并在LXC容器的配置文件中添加以下内容:
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = lxcbr0
lxc.network.name = eth0
lxc.network.hwaddr = 00:16:3e:xx:xx:xx
lxc.network.ipv4 = 10.0.3.10/24
lxc.network.ipv4.gateway = auto
lxc.network.ipv4.dns = 10.0.3.1
这里假设LXC容器位于lxcbr0
网络接口中,我们需要将容器中的网络接口设置为eth0
,并将DNS服务器地址设置为宿主机中运行的dnsmasq节点。然后在宿主机中的/etc/dnsmasq.conf
文件中添加以下内容:
listen-address=::1,10.0.3.1
bind-interfaces
address=/#/10.0.3.1
这会启用dnsmasq服务器,将其绑定到IPv4地址10.0.3.1
,并将所有DNS查询转发到该地址。最后,重启LXC容器,DNS查询就会转发到dnsmasq服务器中,从而加速apt
命令。