2013-04-03 76 views
1

我正在編寫一個將在LXC容器內運行的二進制文件。我控制二進制文件的源代碼,但不控制它運行的容器的內容。特別是,我不想通過寫入二進制文件來污染容器。在主機上存儲的LXC容器內運行程序

有沒有什麼辦法可以運行存儲在主機上的二進制文件,但是在容器的執行上下文(命名空間,chroot,刪除的功能等)內?

回答

0

你可以讓你的程序來setns(2)(一些,但不是所有的命名空間),chroot環境然後刪除功能。

你也可以通過dived獲得類似的東西(實際上不是chroot,但可以訪問容器的chroot)。

您可以在容器中運行[靜態鏈接](使用適當的選項,例如--client-chroot --root-to-current),在包含者和主機上均可見的某些文件系統部分上偵聽UNIX套接字;並運行dive以要求dived在容器的名稱空間中啓動非靜態鏈接的程序。根文件系統將保持與主機相同(因此您的程序可以找到庫),並且包含器的根文件系統將被設置爲當前目錄。

-2

我認爲你可以將主機上的samba服務導出到容器。你只需把你的東西放到samba的共享文件夾中,不要污染容器。

+2

這將需要安裝桑巴,啓動它,創建一個安裝點,並將所有內容安裝在容器內。這是一個公平的污染。 – vsekhar

0

我不認爲這是可能的。你可以做的是在你的容器和主機之間安裝一個共享文件夾(使用綁定安裝)。然後,你可以啓動二進制文件(也就是現在你的容器FS的一部分)使用chroot,例如:

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

0

您可以安裝和應用的升級程序在主機上,然後使用this answer

成本描述的LXC容器旁邊沒有在性能或磁盤空間

相關問題