我正在尝试在 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
但是,当我发布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
有人可以帮忙吗?
编辑:我使用以下命令运行该应用:docker-compose up
答案 0 :(得分:2)
docker-compose文件中的 deploy 键不适用于 docker-compose up (组合文件格式为3及更高版本)。 部署键仅在群体模式下有效。要以群体模式运行
docker swarm init
示例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
要在Docker堆栈中部署的命令
docker stack deploy --compose-file=docker-compose.yml stackname
使用 docker stats
检查CPU和内存的限制引用URL:https://docs.docker.com/compose/compose-file/compose-versioning/#version-2x-to-3x
如果要在非群集部署中设置资源限制,请使用Compose文件格式版本2。
对docker-compose.yml进行示例,以在具有CPU和内存资源限制的非严格部署中进行部署
version: "2.2"
services:
tomcat:
image: tomcat
cpus: "0.5"
mem_limit: 512m
使用命令运行docker-compose.yml文件
docker-compose up
使用 docker stats
检查CPU和内存的限制Ref:https://docs.docker.com/compose/compose-file/compose-file-v2/#cpu-and-other-resources
希望这会有所帮助!