Aquí hay parte de mi archivo docker-compose.yaml
version: '3.4' services: app: build: context: . dockerfile: Dockerfile working_dir: /app deploy: resources: limits: cpus: '0.50' memory: 23M Iniciándolo docker-compose up -d
Cuando hago las docker stats de Docker, dice que el límite sigue siendo 1.9GiB. ¿Qué estoy haciendo mal?
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % 13b6588evc1e app_1 1.86% 20.45MiB / 1.952GiB 1.02%La clave de deploy solo funciona en modo de enjambre y con el archivo docker-compose versión 3 y superior.
En su caso, use la versión 2 del archivo docker-compose y defina los límites de recursos:
version: "2.2" services: app: image: foo cpus: "0.5" mem_limit: 23mVer documentos oficiales aquí
¿Está ejecutando docker-compose en modo enjambre? Si no se recomienda ejecutar la versión 2.x del formato de archivo de redacción.
3.X requiere que docker-compose se ejecute en modo de enjambre para que entre en vigor el nuevo conjunto de directivas de recursos.
Las alternativas en 2.X son cpu_shares, cpu_quota, cpuset, mem_limit, memswap_limit, mem_swappiness
Si no tiene la intención de utilizar implementaciones de docker swarm stack, utilice siempre la versión 2.x más reciente compatible con la versión del motor de docker que utiliza. Las versiones 17.12 y posteriores de Docker admiten la versión 2.4 del archivo de redacción. Docker-Compose tiene todas las funciones que proporciona cli, mientras que swarm todavía carece de algunas de ellas: consulte https://github.com/moby/moby/issues/25303 .
Si usa docker-compose, todos los elementos relacionados con el enjambre en un archivo 3.x se ignorarán, excepto los secretos (¿o eran configuraciones?). Si comienza a mezclar elementos solo 3.x con elementos solo 2.x, su configuración dejará de ser válida.