Docker容器實現(xiàn)資源限制的多種方式(如CPU和內存)
一、內存限制(Memory)
限制最大內存使用:
docker run -m 512m --memory-swap 512m ubuntu
| 參數(shù) | 說明 |
|---|---|
| -m 或 --memory | 設置最大可用物理內存(如 512m, 2g) |
| --memory-swap | 包含內存+交換分區(qū)(swap)的總限制 |
| --memory-reservation | 軟限制(僅在系統(tǒng)壓力大時才強制限制) |
推薦 --memory-swap 值與 --memory 相同,避免 swap 占用過多。
二、CPU 限制
Docker 默認不會限制 CPU,但你可以通過如下方式控制:
方法 1:限制可用 CPU 核心數(shù)
docker run --cpuset-cpus="0,1" ubuntu
表示容器只能使用第 0 和 1 核心。
方法 2:設置 CPU 份額(相對權重)
docker run --cpu-shares=512 ubuntu
- 默認是 1024
- 多個容器分配 CPU 份額:容器 A 是 512,容器 B 是 1024,B 獲取 CPU 的概率是 A 的 2 倍
方法 3:控制 CPU 使用比例
docker run --cpus="1.5" ubuntu
表示最多使用 1.5 核心(如果宿主機是多核,可跨核調度)。
三、綜合示例(限制 CPU + 內存)
docker run -d \ --name limited_container \ -m 512m --memory-swap=512m \ --cpus="1.0" \ ubuntu sleep 1000
- 限制最大 512MB 內存
- 限制最多 1 個 CPU 核心
四、查看資源限制
docker inspect 容器ID
查看 JSON 中的 "HostConfig" → "Memory"、"NanoCpus" 等字段。
或使用命令:
docker stats 容器名
實時查看容器的 CPU、內存使用情況。
五、推薦實踐
| 建議 | 說明 |
|---|---|
| 限制生產(chǎn)容器的內存和 CPU | 防止容器 OOM、搶占系統(tǒng)資源 |
| 多容器部署時使用 --cpus | 精細控制資源分配 |
| --memory-swap=memory 推薦設置一致 | 避免 swap 被濫用 |
| 使用 Kubernetes 時通過資源 Request / Limit | 替代 Docker 參數(shù)方式 |
| docker stats 做定期監(jiān)控或報警 | 配合 cadvisor / Prometheus |
六、進階控制(cgroups)
Docker 本質上是使用 Linux 的 cgroups 控制組 實現(xiàn)資源限制的,可以通過如下命令查看:
cat /sys/fs/cgroup/memory/docker/<container_id>/memory.limit_in_bytes
若你使用 containerd / podman 等容器引擎,也會采用類似方式控制資源。
七、總結圖
docker run \ --cpus="1.5" \ --memory="1g" \ --memory-swap="1g" \ your-image
限制容器最大使用 1.5 核心、1GB 內存,不允許超額。
如你需要:
- 在
docker-compose.yml中配置資源限制 - Kubernetes 中 Pod 的資源 request/limit
- 或資源超限后的報警或自恢復機制設計
到此這篇關于Docker容器實現(xiàn)資源限制的多種方式(如CPU和內存)的文章就介紹到這了,更多相關Docke資源限制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker中Harbor企業(yè)級鏡像倉庫的搭建與使用
本文介紹了Harbor企業(yè)級鏡像倉庫的搭建與使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-12-12
Docker網(wǎng)絡原理及自定義網(wǎng)絡詳細解析
一般使用自定義網(wǎng)絡,自定義網(wǎng)絡使用network創(chuàng)建,創(chuàng)建時可以指定子網(wǎng)網(wǎng)段及網(wǎng)關等信息,在創(chuàng)建并啟動容器時指定使用的網(wǎng)絡,今天通過本文給大家介紹Docker網(wǎng)絡原理及自定義網(wǎng)絡的相關知識,感興趣的朋友一起看看吧2021-05-05

