我正在尝试运行一个命令,该命令需要限制在一个目录内,并在web应用程序的shell函数中执行。
我的目标是运行该程序,但将其限制在一个目录中。每当我想运行程序时,这个目录都会更改,并且多个实例需要能够同时在不同的目录上运行。
我看过chroot,似乎每次都需要显式地创建一个文件系统。我正在寻找一个更临时的解决方案,它接受所需的根目录,并且不需要我到处复制文件或进行奇怪的安装。
您最想要的可能是容器。
一个容器需要几毫秒才能启动,每次运行都会创建一个基本上完整的chroot监狱。像docker run --rm --volume /var/chroot/jail/whatever:/workdir ubuntu stat /workdir
这样的命令将在chrootjail目录上运行stat
,所有环境都是最新的Ubuntu版本。然后它将废除chroot监狱。再次运行它将创建一个全新的监狱。
你需要将你的网络应用程序构建为一个docker镜像,放在你需要的任何监狱(Ubuntu、CentOS等(之上,这意味着调整你的构建系统来创建这样的镜像。