如何在 docker-compose 中使用交换内存

aru*_*836 1 docker docker-compose

我想在我的dockerized应用程序中使用交换内存,因为有时容器的内存消耗超过限制并且它们会崩溃。

我在 docker-compose 中使用以下配置会产生错误

ERROR: The Compose file './docker-compose.yml' is invalid because:
services.app1-cnn.deploy.resources.reservations value Additional properties are not allowed ('memory-swap' was unexpected)
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: "3.3"             

services:

  app-cnn:
    build: ./app
    image: "app-cnn"
    restart: always
    container_name: app-cnn
    ports:
      - "5000:5000"

    deploy:
      replicas: 1
      resources:
        limits:
          memory: 3G
        reservations:
          memory-swap: 6G
Run Code Online (Sandbox Code Playgroud)

Jia*_*eng 6

参考https://docs.docker.com/compose/compose-file/#memswap_limit

从我的测试结果来看,默认情况下 memswap 是内存大小的两倍。如果需要更多,请使用 memswap_limit 覆盖它。

不得不说这个结构有点奇怪,不知道为什么要这样设计。无论如何,下面的配置对我有用。


...
    deploy:
      resources:
        limits:
          memory: 512M
        reservations:
          memory: 128M
    memswap_limit: 6G


Run Code Online (Sandbox Code Playgroud)