允许docker利用完整的CPU和底层RAM

问题描述

有没有一种方法可以指定码头工人可以使用的总RAM和总cpu?我的机器大小为16 GB RAM和4个cpu。我该如何使docker机器利用完整的RAM和底层cpu

version: '3'
services:
prisma:
    image: prismagraphql/prisma:1.34
    restart: always
    ports:
    - "4466:4466"
    environment:
    JAVA_OPTS: '-Xmx8192m'
    prisma_CONfig: |
        port: 4466
        databases:
        default:
            connector: mongo
            uri: 'mongodb+srv://abc:[email protected]/default_default?retryWrites=true&w=majority'

解决方法

您要问的是默认行为。

来自docs

默认情况下,容器没有资源限制,并且可以使用主机内核调度程序允许的尽可能多的给定资源。

要确保容器获取最少的资源并且不受调度程序的约束,您可以做的是使用资源reservations以确保容器始终具有最少的必需资源,并且可以选择使用limits如果您还想强制使用资源的上限。

请参见Resources section in docs

version: "3.8"
services:
  redis:
    image: redis:alpine
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 50M
        reservations:
          cpus: '0.25'
          memory: 20M

在此一般示例中,redis服务被限制为使用不超过50M的内存和0.50(单个内核的50%)的可用处理时间(CPU),并具有20M的内存和0.25 CPU保留时间(一如既往)。