17.4.传统 jail(厚 jail)

这些 jail 类似于一个真正的 FreeBSD 系统。它们在很大程度上可以像普通宿主系统一样进行管理,并且可以独立更新。

17.4.1. 创建经典 jail

原则上,jail 只需要一个主机名、一个根目录、一个 IP 地址,以及一套用户空间。

jail 的用户空间可以从 FreeBSD 官方下载服务器获取。

执行以下命令下载用户空间:

# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/14.2-RELEASE/base.txz -o /usr/local/jails/media/14.2-RELEASE-base.txz

下载完成后,需要将其内容解压到 jail 的目录中。

执行以下命令将用户空间解压到 jail 目录:

# mkdir -p /usr/local/jails/containers/classic
# tar -xf /usr/local/jails/media/14.2-RELEASE-base.txz -C /usr/local/jails/containers/classic --unlink

将用户空间解压到 jail 目录后,需要复制时区和 DNS 服务器的配置文件:

# cp /etc/resolv.conf /usr/local/jails/containers/classic/etc/resolv.conf
# cp /etc/localtime /usr/local/jails/containers/classic/etc/localtime

文件复制完成后,下一步是通过以下命令更新到最新的补丁级别:

# freebsd-update -b /usr/local/jails/containers/classic/ fetch install

最后一步是配置 jail。需要在 /etc/jail.conf 文件中,或者在 jail.conf.d 目录中,添加包含该 jail 参数的配置条目。

示例如下:

classic {
  # 启动与日志
  exec.start = "/bin/sh /etc/rc";
  exec.stop = "/bin/sh /etc/rc.shutdown";
  exec.consolelog = "/var/log/jail_console_${name}.log";

  # 权限设置
  allow.raw_sockets;
  exec.clean;
  mount.devfs;

  # 主机名与路径
  host.hostname = "${name}";
  path = "/usr/local/jails/containers/${name}";

  # 网络配置
  ip4.addr = 192.168.1.151;
  interface = em0;
}

执行以下命令启动该 jail:

# service jail start classic

关于如何管理 jail 的更多信息,参见 Jail 管理 一节。

最后更新于