docker-compose 如何限制 CPU 和内存大小

7 min read

Docker Compose 提供了一些配置项可以用来限制容器的 CPU 和内存使用:

  1. cpus 配置项:用来限制容器可以使用的 CPU 核心数量。可以是一个小数,表示在多个 CPU 上分配,也可以是整数,表示直接分配给某个 CPU 核心。例如:

    services:
      myservice:
        image: myimage
        cpus: 0.5
    

    这个配置会将 myservice 容器的 CPU 使用限制在 50%。

  2. cpu_shares 配置项:用来设置容器 CPU 使用的相对权重,分配越高,占用的 CPU 资源就越高。默认值是 1024,可以设置为其他整数值。例如:

    services:
      myservice:
        image: myimage
        cpu_shares: 512
    

    这个配置会将 myservice 容器的 CPU 使用权重降低一半。

  3. mem_limit 配置项:用来限制容器可以使用的内存大小。可以使用字节数或者人类可读的单位(例如 1G512M)。例如:

    services:
      myservice:
        image: myimage
        mem_limit: 2G
    

    这个配置会将 myservice 容器的内存上限设置为 2GB。

  4. memswap_limit 配置项:用来设置容器可以使用的交换分区大小,一般建议设置为与 mem_limit 相同或或 0。例如:

    services:
      myservice:
        image: myimage
        mem_limit: 2G
        memswap_limit: 2G
    

    这个配置会将 myservice 容器的交换分区上限设置为 2GB。

这些配置项可以在 docker-compose.yml 文件的 services 部分使用。注意,虽然这些配置项可以限制容器使用资源的上限,但并没有限制容器使用资源的下限。如果容器可以使用更少的资源,那么它就可以使用更少的资源。