📜  apt slow inside lxc - Shell-Bash (1)

📅  最后修改于: 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命令就会更快了。

方法二:在容器配置文件中修改DNS服务器地址

另一种方法是在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作为本地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命令。