17.6.管理 jail

17.6.1. 列出正在运行的 Jail

要列出主机系统上正在运行的 jail,可以使用 jls(8) 命令:

# jls

输出应该类似于以下内容:

JID  IP Address      Hostname                      Path
     1  192.168.250.70  classic                       /usr/local/jails/containers/classic

jls(8) 支持参数 --libxo,能通过 libxo(3) 库以其他格式显示输出,例如 JSONHTML 等。

例如,执行以下命令以获取 JSON 输出:

# jls --libxo=json

输出应该类似于如下内容:

{"__version": "2", "jail-information": {"jail": [{"jid":1,"ipv4":"192.168.250.70","hostname":"classic","path":"/usr/local/jails/containers/classic"}]}}

17.6.2. 启动、重启和停止 Jail

service(8) 用于在主机上启动、重启或停止一个 jail。

例如,要启动一个 jail,运行以下命令:

# service jail start jailname

start 参数更改为 restartstop 可以执行其他操作,如重启或停止 jail。

17.6.3. 销毁 Jail

销毁一个 jail 不是像使用 service(8) 停止 jail 并删除 jail 目录和 /etc/jail.conf 条目那么简单。

FreeBSD 非常重视系统安全。因此,某些文件即使是 root 用户也不能删除。这种功能称为文件标志(File Flags)。

第一步是停止所需的 jail,执行以下命令:

# service jail stop jailname

第二步是使用 chflags(1) 移除这些标志,执行以下命令,其中 classic 是要删除的 jail 名称:

# chflags -R 0 /usr/local/jails/containers/classic

第三步是删除包含 jail 的目录:

# rm -rf /usr/local/jails/containers/classic

最后,需要删除 /etc/jail.confjail.conf.d 中的 jail 条目。

17.6.4. 在 Jail 中处理软件包

pkg(8) 工具支持 -j 参数,用于处理安装在 jail 中的软件包。

例如,要在 jail 中安装 nginx-lite,可以从主机执行以下命令:

# pkg -j classic install nginx-lite

有关在 FreeBSD 中使用软件包的更多信息,请参见 安装应用程序:软件包和 Ports

17.6.5. 访问 Jail

虽然前面提到最好从主机系统管理 jails,但可以使用 jexec(8) 进入一个 jail。

可以从主机系统执行 jexec(8) 命令来进入 jail:

# jexec -u root jailname

当进入 jail 时,系统将显示在 motd(5) 中配置的消息。

17.6.6. 在 Jail 中执行命令

要从主机系统在 jail 中执行命令,可以使用 jexec(8)

例如,要停止在 jail 中运行的服务,可以执行以下命令:

# jexec -l jailname service nginx stop

最后更新于

这有帮助吗?