在存储在主机上的LXC容器中运行程序

时间:2013-04-03 04:07:09

标签: ubuntu lxc

我正在写一个将在LXC容器内运行的二进制文件。我控制二进制文件的源代码,但不控制它将运行的容器的内容。特别是,我不想通过将二进制文件写入它们来污染容器。

有没有办法可以运行存储在主机上的二进制文件,但是在容器的执行上下文(命名空间,chroot,删除的功能等)中?

4 个答案:

答案 0 :(得分:1)

你可以让你编程到setns(2)(对某些名称空间而不是所有名称空间),chroot然后删除功能。

你也可以获得与dived类似的东西(实际上并没有chrooted,但可以访问容器的chroot)。

您可以在容器内运行[静态链接]潜水(使用适当的选项,例如--client-chroot --root-to-current),在容器和主机上都可见的某些文件系统部分上侦听UNIX套接字;并运行dive要求dived在容器的命名空间中启动非静态链接的程序。根文件系统将与主机保持一致(因此您的程序可以找到库),并且containter的根文件系统将被设置为当前目录。

答案 1 :(得分:0)

我不认为这是可能的。您可以做的是在容器和主机之间安装共享文件夹(使用bind mount)。然后,您可以使用chroot启动二进制文件(现在是容器FS的一部分),例如:

sudo chroot <container_rootfs> /bin/bash -c 'cd <your shared folder>; ./<your_binary>'

答案 2 :(得分:0)

您可以在主机上安装并应用升级程序,然后使用this answer中描述的lxc容器

性能或磁盘空间中几乎没有任何成本

答案 3 :(得分:-2)

我认为您可以将samba服务从主机导出到容器。你只需将你的东西放到samba的共享文件夹中,不要污染容器。