允许 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)
centos7下安装docker(10容器底层--cgroup和namespace)