我一直在 Ubuntu 14.04 上试验 LXC/LXD,一切都很好。我只需要弄清楚如何让共享目录在我的主机和容器之间工作,这样我就可以一劳永逸地放弃 Virtualbox。
我看过这个页面:https : //wiki.gentoo.org/wiki/LXD
它提供了说明,但我只是不断收到错误。
有没有人知道任何简单,明确的说明来使其工作?非常感谢任何帮助。
ph0*_*nix 22
您提到的https://wiki.gentoo.org/wiki/LXD上的说明是正确的,但可能需要更多解释。
在主机上,您首先检查存储容器数据的目录的所有权。跑
sudo ls -l /var/lib/lxd/containers
Run Code Online (Sandbox Code Playgroud)
并检查您要与其共享目录的容器的所有者。在我的情况下uid
,gid
两者都是 100000。
接下来,使用这些来更改要共享的目录的所有权:
sudo chown 100000:100000 /tmp/share_on_host
Run Code Online (Sandbox Code Playgroud)
按照您在评论中指出的方式与容器共享目录:
lxc config device add mycontainer sharedtmp disk \
path=/tmp/share_on_guest source=/tmp/share_on_host
Run Code Online (Sandbox Code Playgroud)
现在,在容器中,您将看到该目录/tmp/share_on_guest
(我不建议挂载您的目录,/tmp
因为它被系统用于其他内容并具有特殊权限)归 root 所有。从这里开始,您可以chown
在容器中使用来将所有权更改为适当的uid
并且gid
适合您在容器中的用户。
作为旁注,在将容器中的所有权更改为例如具有uid
33的用户后,您将在主机上看到uid
现在是 100033,这完全有意义。
小智 6
这是此问题的更新答案。
/var/www
像/var/test
在容器中一样挂载主机文件夹。
lxc config device add mycontainer vartest disk source=/var/www path=/var/test
Run Code Online (Sandbox Code Playgroud)
我现在对这个问题有了一个有效、安全的解决方案,使用 LXD 配置文件来处理容器中和主机上的 UID 和 GID 之间的映射。
可以在这里找到一个非常有用的要点:
https://gist.github.com/bloodearnest/ebf044476e70c4baee59c5000a10f4c8