设置

设置

我观察到,su当在嵌套在 Ubuntu LXD 容器中的 LXD Debian 容器中执行该命令时,该命令耗时过长(30 秒)。这种开销不会发生在未嵌套的 Debian 容器中,也不会发生在嵌套在 Ubuntu 容器中的 Ubuntu 容器中。有人对此有任何解释吗?接下来我将描述如何重现此问题。

设置

我已经在 Ubuntu 18.04 机器上设置了 LXD 容器以使用嵌套容器(如https://ubuntu.com/blog/nested-containers-in-lxd)。我使用系统 apt 包(lxdlxd-client)来安装 LXD。然后,我创建了两个容器,如下所示:

lxc launch ubuntu:20.04 c1 -c security.nesting=true
lxc launch images:debian/10 c2

然后,在容器 c1 内部,我创建了两个嵌套容器:

lxd init
lxc launch ubuntu:20.04 c3
lxc launch images:debian/10 c4

在 Debian 容器中,我debian使用以下命令创建了非 root 用户:

adduser --home /home/debian --gecos Debian --disabled-password debian

在 Ubuntu 容器中不需要创建非 root 用户,因为该ubuntu用户已经定义。

su测量需要多长时间

su对于每个容器,我使用以下命令测量执行命令所需的时间(user其中是ubuntudebian):

time pwd
time su $user -c pwd

由于命令的开销,预计第二条命令会花费更多时间su。在所有情况下,此开销约为 59 毫秒,但容器除外c4(即 Ubuntu 容器内的 Debian 容器),其开销约为 30 秒。

相关内容