跳过内容

第七章: 容器配置选项

在本章中,您需要以非特权用户身份运行命令(如果您一直从本书的开头开始操作,则为“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 官方文档 搜索该配置参数,或在 Google 中搜索整个字符串,例如 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 的 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 会自行很好地管理环境。

还有许多其他选项可能对某些人感兴趣。进行自己的研究将帮助您了解其中哪些选项对您的环境有价值。

作者:史蒂文·斯宾塞

贡献者:埃塞基尔·布鲁尼,甘娜·齐尔诺娃