跳至内容

第 7 章:容器配置选项

在本章中,您需要以非特权用户(如果您从本书开头一直跟随,则为“lxdadmin”)的身份运行命令。

安装容器后,有大量的选项可用于配置容器。但在看到这些选项之前,让我们先检查一下容器的 info 命令。在此示例中,您将使用 ubuntu-test 容器

lxc info ubuntu-test

这将显示以下内容

Name: ubuntu-test
Location: none
Remote: unix://
Architecture: x86_64
Created: 2021/04/26 15:14 UTC
Status: Running
Type: container
Profiles: default, macvlan
Pid: 584710
Ips:
  eth0:    inet    192.168.1.201    enp3s0
  eth0:    inet6    fe80::216:3eff:fe10:6d6d    enp3s0
  lo:    inet    127.0.0.1
  lo:    inet6    ::1
Resources:
  Processes: 13
  Disk usage:
    root: 85.30MB
  CPU usage:
    CPU usage (in seconds): 1
  Memory usage:
    Memory (current): 99.16MB
    Memory (peak): 110.90MB
  Network usage:
    eth0:
      Bytes received: 53.56kB
      Bytes sent: 2.66kB
      Packets received: 876
      Packets sent: 36
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0

这里有很多有用的信息,从应用的配置文件,到正在使用的内存、正在使用的磁盘空间等等。

关于配置和一些选项的说明

默认情况下,LXD 会为容器分配所需的系统内存、磁盘空间、CPU 核心和其他资源。但是,如果您想更具体一些,该怎么办?这是完全可能的。

不过,这样做是有得有失的。例如,如果您分配了系统内存,但容器并未全部使用,那么您就将其占用了,而其他可能真正需要它的容器却无法使用。反之,情况也可能发生。如果一个容器想要使用超过其份额的内存,它可能会阻止其他容器获得足够的内存,从而损害它们的性能。

请记住,您对容器进行的每一项配置操作可能在其他地方产生负面影响。

与其逐一运行所有配置选项,不如使用 Tab 自动补全来查看可用的选项

lxc config set ubuntu-test

Tab

这将向您显示配置容器的所有选项。如果您对某个配置选项的作用有疑问,请前往 LXD 官方文档 搜索该配置参数,或者搜索整个字符串,例如 lxc config set limits.memory,并查看搜索结果。

在这里,我们检查几个最常用的配置选项。例如,如果您想设置容器可以使用的最大内存量

lxc config set ubuntu-test limits.memory 2GB

这意味着,如果内存可用,例如有 2GB 内存可用,那么容器实际上可以使用超过 2GB 的内存,如果它可用的话。这是一个软限制,例如。

lxc config set ubuntu-test limits.memory.enforce 2GB

这意味着容器永远不能使用超过 2GB 的内存,无论当前是否可用。在这种情况下,这是一个硬限制。

lxc config set ubuntu-test limits.cpu 2

这意味着将容器可以使用的 CPU 核心数量限制为 2。

注意

当本文档为 Rocky Linux 9.0 重写时,9.0 的 ZFS 存储库尚不可用。因此,我们所有的测试容器都是在初始化过程中使用“dir”构建的。这就是为什么下面的示例显示的是“dir”而不是“zfs”存储池。

还记得我们在 ZFS 章节中设置存储池的时候吗?您将池命名为“storage”,但您也可以将其命名为任何名称。如果您想检查这一点,可以使用此命令,该命令同样适用于任何其他池类型(如 dir 所示)

lxc storage show storage

这将显示以下内容

config:
  source: /var/snap/lxd/common/lxd/storage-pools/storage
description: ""
name: storage
driver: dir
used_by:
- /1.0/instances/rockylinux-test-8
- /1.0/instances/rockylinux-test-9
- /1.0/instances/ubuntu-test
- /1.0/profiles/default
status: Created
locations:
- none

这表明我们所有的容器都使用我们的 dir 存储池。使用 ZFS 时,您还可以为容器设置磁盘配额。下面是该命令的样子,为 ubuntu-test 容器设置 2GB 的磁盘配额

lxc config device override ubuntu-test root size=2GB

如前所述,请谨慎使用配置选项,除非您有一个容器想要使用远超其份额的资源。LXD 在大多数情况下会自行管理好环境。

还有许多其他选项可能引起一些人的兴趣。进行自己的研究将有助于您找出其中是否有对您的环境有价值的选项。

作者:Steven Spencer

贡献者:Ezequiel Bruni, Ganna Zhyrnova