docker不考虑docker-compose.yml中指定的资源限制

bal*_*teo 5 docker docker-compose

我试图在docker-compose.yml文件中设置资源限制。

这里是:

version: "3.7"
services:
  postgres:
    build: "docker/postgres"
    container_name: "postgres"
    ports:
    - 5432:5432
    environment:
      POSTGRES_USER: prodev
      POSTGRES_PASSWORD: prodev
      POSTGRES_MULTIPLE_DATABASES: pro_dev, pro_test
    networks:
    - my_proto_app
  the_api:
    deploy:
      resources:
        limits:
          cpus: '0.001'
          memory: 50M
        reservations:
          cpus: '0.0001'
          memory: 20M
    image: the_api:latest
    ports:
    - 8080:8080
    depends_on:
    - postgres
    links:
    - postgres
    networks:
    - my_proto_app
networks:
  my_proto_app:
    internal: false
Run Code Online (Sandbox Code Playgroud)

但是,当我发布docker stats以了解我的资源限制时,我注意到我的限制没有被考虑:

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
c0b7d2fffc42        postgres            0.04%               20.89MiB / 1.952GiB   1.05%               148kB / 171kB       0B / 856kB          16
0a0f9e482f86        api_the_api_1       2.16%               739.5MiB / 1.952GiB   37.00%              409kB / 464kB       0B / 73.7kB         59
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

编辑:我使用以下命令运行该应用程序:docker-compose up

Pre*_*rem 6

docker-compose 文件中的deploy密钥在docker-compose up上不起作用(使用 compose 文件格式版本 3 及更高版本)。该部署将在工作只能在群模式键。以群模式运行

  docker swarm init 
Run Code Online (Sandbox Code Playgroud)

示例 docker-compose.yml 以在具有 CPU 和内存资源限制的集群部署中进行部署

  version: "3.3"
  services:
  tomcat:
    image: tomcat
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 250M
        reservations:
          cpus: '0.5'
          memory: 120M
Run Code Online (Sandbox Code Playgroud)

在 docker 堆栈中部署的命令

  docker stack deploy --compose-file=docker-compose.yml stackname
Run Code Online (Sandbox Code Playgroud)

使用 docker stats检查 CPU 和内存资源限制

参考网址:https : //docs.docker.com/compose/compose-file/compose-versioning/#version-2x-to-3x

如果要对非 swarm 部署设置资源限制,请使用 Compose 文件格式版本 2。

示例 docker-compose.yml 以在具有 CPU 和内存资源限制的非 swarm 部署中进行部署

 version: "2.2"
 services:
   tomcat:
     image: tomcat
     cpus: "0.5"
     mem_limit: 512m
Run Code Online (Sandbox Code Playgroud)

使用命令运行 docker-compose.yml 文件

  docker-compose up
Run Code Online (Sandbox Code Playgroud)

使用检查 CPU 和内存资源限制 docker stats

参考:https : //docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources

希望这可以帮助 !!!