Docker中的容器资源限制解读

 更新时间:2025年09月09日 09:11:57   作者:lovely_nn  
文章介绍了Docker中限制容器资源的方法,包括通过--cpuset-cpus指定CPU核心、--cpu-shares调整调度优先级(如512低于默认1024),以及--memory限制内存大小,最后说明了如何验证这些配置

在 Docker 中,可以通过多种方式对容器的资源使用进行限制,包括 CPU、内存、磁盘 I/O 等。

限制 cpu 资源

运行容器时可以通过指定以下参数来限制容器的 CPU 资源:

  • --cpuset - cpus:设置容器可以使用的 CPU 核心。
  • --cpu - shares:设置容器的 CPU 调度优先级。

示例:

限制容器只能在主机的第 0 和第 1 个 CPU 核心上运行,并设置容器的 CPU 调度权重为 512,Docker 默认的 CPU 股份值是 1024,因此这个容器在与其他容器竞争 CPU 时,其优先级相对较低。

# docker run -itd --name dcoker-cpu01 --cpuset-cpus 0,1 --cpu-shares 512 busybox

限制内存资源

运行容器时可以通过指定以下参数来限制容器的内存:

  • --memory 限制容器可用的内存。

示例:

创建容器名为 busybox1,限制容器只能在主机的第 2 和第 3 个 CPU 核心上运行,限制容器可用的内存为 128 MB。

# docker run -itd --name busybox1 --cpuset-cpus 2,3 --memory 128m busybox

验证:

查看容器 busybox1运行在哪些 cpu核上,内存限制为多少.

# docker inspect --format '{{.State.Pid}}' busybox1    # 获取容器的pid
24493
# cat /proc/24493/status | grep Cpu                    # 查看该pid进程的状态信息
Cpus_allowed:    c
Cpus_allowed_list:    2-3
# docker inspect busybox1 | grep -e "Memory"           # 查看容器内存(单位为字节)
            "Memory": 134217728,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 268435456,
            "MemorySwappiness": null,
# 如上容器 busybox1 如预期运行在第2、3个cpu核上, 内存资源限制为 128MiB

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker部署安装Nginx的详细过程

    Docker部署安装Nginx的详细过程

    Nginx 是一款高性能的 web 服务器、反向代理服务器以及电子邮件(IMAP/POP3/SMTP)代理服务器,这篇文章主要介绍了Docker部署安装Nginx,需要的朋友可以参考下
    2024-04-04
  • mac使用docker搭建kafka集群方式

    mac使用docker搭建kafka集群方式

    本文介绍了在MacOS上使用Docker部署Kafka集群的全过程,包括环境准备、删除历史配置、编写Dockerfile、启动容器、配置Kafka以及生产者消费者测试等内容
    2026-05-05
  • Docker可视化管理工具DockerUI的使用

    Docker可视化管理工具DockerUI的使用

    这篇文章主要介绍了Docker可视化管理工具DockerUI的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • docker重启会创建幽灵网桥的问题

    docker重启会创建幽灵网桥的问题

    删除网卡后路由异常,tracepath显示网络未离服务器,重启导致IP冲突无法连接,通过AI工具找到全新解决方案,成功修复,总结个人经验供参考
    2025-08-08
  • Docker环境下Redis Lua脚本部署与执行方式

    Docker环境下Redis Lua脚本部署与执行方式

    这篇文章主要介绍了Docker环境下Redis Lua脚本部署与执行方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • 基于Docker搭建Redis一主两从三哨兵的实现

    基于Docker搭建Redis一主两从三哨兵的实现

    这篇文章主要介绍了基于Docker搭建Redis一主两从三哨兵的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Docker镜像远程(离线)迁移实践

    Docker镜像远程(离线)迁移实践

    本文介绍了如何将本地服务器的指定镜像打包为tar格式的文件并通过scp命令将其传输到另一台服务器,scp命令依赖于ssh协议,具有加密传输、跨主机通用和易用性等特点,通过编写bash脚本,可以简化传输过程,并且可以避免每次传输时手动输入远程服务器密码
    2026-03-03
  • docker使用阿里云镜像仓库的方法

    docker使用阿里云镜像仓库的方法

    本篇文章主要介绍了docker使用阿里云镜像仓库的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • Docker持久化搭建MinIO过程

    Docker持久化搭建MinIO过程

    这篇文章主要介绍了Docker持久化搭建MinIO过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-08-08
  • docker该如何删除已停止的容器

    docker该如何删除已停止的容器

    Docker是一个非常有趣的项目,容器是独立运行的一个或一组应用,及他们的运行环境,容器是Docker中的一个重要的概念,这篇文章主要给大家介绍了关于docker该如何删除已停止的容器的相关资料,需要的朋友可以参考下
    2023-05-05

最新评论