我正在寻找一种方法来启动一个安装了特定软件包的 shell,但不需要访问系统的其余部分,即:

  • 仅挂载当前目录 ( pwd),无法访问文件系统的其他部分*
  • 仅提供请求的包*以及 shell
  • 能够禁用网络访问将是一个优点
  • 通常无法访问系统的其他部分*
    因此,我正在寻找一个类似于可以使用的环境docker: (或者podman, ETC...)
    docker run -it -v "$PWD:/pwd" -w /pwd $someImage
    
    或 Guix:
    guix shell --pure --container --network $somePackage
    

*除了绝对必要的

这可能吗nix?优点是包内容的存储与主机系统共享,熟悉系统等等;并且,与guix,Nix 有更多可用的软件包。

答案1

容器的底层技术是 chroot 和 namespaces,您可以使用它们来实现您所寻找的东西。

限制文件系统视图的 chroot 部分通常称为 jail(类似于 BSD),可以通过命名空间来限制网络访问。

但是,如果您正在寻找可复制粘贴的解决方案,我强烈建议您坚持使用可以为您包装大部分内容的容器。

相关内容