我一直在 Ubuntu 14.04 上试验 LXC/LXD,一切都很好。我只需要弄清楚如何让共享目录在我的主机和容器之间工作,这样我就可以一劳永逸地抛弃 Virtualbox。
我看过这个页面:https ://wiki.gentoo.org/wiki/LXD
其中提供了说明,但我只是不断收到错误。
有谁知道任何简单明了的说明来使它正常工作?非常感谢任何帮助。
我一直在 Ubuntu 14.04 上试验 LXC/LXD,一切都很好。我只需要弄清楚如何让共享目录在我的主机和容器之间工作,这样我就可以一劳永逸地抛弃 Virtualbox。
我看过这个页面:https ://wiki.gentoo.org/wiki/LXD
其中提供了说明,但我只是不断收到错误。
有谁知道任何简单明了的说明来使它正常工作?非常感谢任何帮助。
您提到的https://wiki.gentoo.org/wiki/LXD上的说明是正确的,但可能需要更多解释。
在主机上,您首先检查存储容器数据的目录的所有权。跑
并检查您要与之共享目录的容器的所有者。在我的例子中,
uid
和gid
都是 100000。接下来,使用这些来更改您要共享的目录的所有权:
按照您在评论中指出的方式与容器共享目录:
现在,在容器中,您将看到该目录
/tmp/share_on_guest
(我不建议挂载您的目录,/tmp
因为系统将其用于其他内容并具有特殊权限)由 root 拥有。从这里开始,您可以chown
在容器中使用将所有权更改为适当的uid
并且gid
适合您在容器中的用户。作为旁注,在将容器中的所有权更改为例如具有
uid
33 的用户后,您将在主机上看到uid
现在有 100033,这完全有意义。这是这个问题的更新答案。
/var/www
像/var/test
在容器中一样安装主机文件夹。您可以为容器分配额外的设备,这些设备可以是主机可访问的文件夹。
请注意,这
<device>
只是您分配的任意名称,将用作后续设备管理的 ID。例如,将主机文件夹“./host”挂载为容器中的“/mnt/host”...
仍然存在一个问题——如果您希望主机和容器都可以写入此文件夹,则需要相应地配置所有权和权限。
id
LXD 的默认模式使用户和组值 的数字范围虚拟化,这使情况变得复杂。然而,有一个简单的解决方案:通过将容器配置为以主机等效权限运行来绕过此虚拟化...目前我还不清楚这种方法对主机安全的全部影响,但似乎在某种程度上被虚拟化“包含”了。实际风险取决于您使用容器的方式和原因。请参阅https://insights.ubuntu.com/2017/06/15/custom-user-mappings-in-lxd-containers上的技术说明
进一步注意,如果您通常以非 root 用户身份在容器中操作,这种方法可能最有效,例如,如果您附加...
基于ph0t0nix 的出色回答,我为我的 Ubuntu 18.04 服务器提出了以下分步方法:
在主机中确定 rootfs 所有者的 UID:
在容器中确定ubuntu的UID(即容器中的用户):
在主机中创建共享文件夹并将其添加到容器中:
在共享文件夹的主机 UID 中调整(UID = UID host + UID guest):
来宾(用户 ubuntu)现在可以访问共享文件夹,并且可以使用
chmod
.我现在有一个有效的、安全的解决这个问题的方法,使用 LXD 配置文件来处理容器和主机上的 UID 和 GID 之间的映射。
可以在这里找到一个非常有用的要点:
https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8