我正在寻找一种方法来启动一个安装了特定软件包的 shell,但不需要访问系统的其余部分,即:
- 仅挂载当前目录 (
pwd
),无法访问文件系统的其他部分* - 仅提供请求的包*以及 shell
- 能够禁用网络访问将是一个优点
- 通常无法访问系统的其他部分*
因此,我正在寻找一个类似于可以使用的环境docker
: (或者podman
, ETC...)
或 Guix:docker run -it -v "$PWD:/pwd" -w /pwd $someImage
guix shell --pure --container --network $somePackage
*除了绝对必要的
这可能吗nix
?优点是包内容的存储与主机系统共享,熟悉系统等等;并且,与guix
,Nix 有更多可用的软件包。
答案1
容器的底层技术是 chroot 和 namespaces,您可以使用它们来实现您所寻找的东西。
限制文件系统视图的 chroot 部分通常称为 jail(类似于 BSD),可以通过命名空间来限制网络访问。
但是,如果您正在寻找可复制粘贴的解决方案,我强烈建议您坚持使用可以为您包装大部分内容的容器。