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

Posted

技术标签:

【中文标题】允许 docker 使用完整的 CPU 和底层 RAM【英文标题】:Allow docker to utilize the complete CPUs and underlying RAM 【发布时间】:2020-12-06 13:44:44 【问题描述】:

有没有办法指定 docker 可以使用的总 RAM 和总 CPU?我的机器大小是 16 GB RAM 和 4 个 CPU。如何让 docker-machine 使用完整的 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:test@abc.net/default_default?retryWrites=true&w=majority'

【问题讨论】:

【参考方案1】:

你问的是默认行为。

来自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 时间(一如既往地可用)。

【讨论】:

以上是关于允许 docker 使用完整的 CPU 和底层 RAM的主要内容,如果未能解决你的问题,请参考以下文章

实现容器的底层技术 - 每天5分钟玩转 Docker 容器技术(30)

实现容器的底层技术 - 每天5分钟玩转 Docker 容器技术(30)

docker常见操作总结

centos7下安装docker(10容器底层--cgroup和namespace)

Docker底层技术Namespace & Cgroup应用

一个 docker 容器使用多少个 CPU?