暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

关于Docker容器下查看资源占用情况以及对特定容器内存进行限制【测试成功】

巴韭特锁螺丝 2023-09-25
32

一、问题背景

    在未对某容器内存占用限制的情况下,该容器内存经常会跑满,致使服务器卡死,无法正常连接,需要限制制定容器的资源占用情况。

二、查看容器资源占用情况

  1、  查看所有容器的资源占用情况【实时监控】:

    docker stats

2、查看容器的资源占用数据而不需要实时监控

    docker stats --no-stream

3、按照内存占用大小进行排序

    docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.MemUsage}}"

    或者

      docker stats --no-stream --format "table {{.Container}}\t{{.Name}}\t{{.MemUsage}}" | tail -n +2 | sort -k 3 -h -r

      4、按照CPU占用大小进行排序

      docker stats --no-stream | awk 'NR > 1' | sort -k 3 -n

      三、优化正在运行的容器资源占用配置

      1、停止需要调整的容器

          docker stop 5eb9b08ebe30

      2、修改容器的内存限制

          docker update --memory 2g 5eb9b08ebe30

        [root@Aliyun YLMonitor]# docker update --memory 2g 5eb9b08ebe30
        Error response from daemon: Cannot update container 5eb9b08ebe30421f08f1cc31aa97adbe21d512aaa4963203c528fbaa225cba25: Memory limit should be smaller than already set memoryswap limitupdate the memoryswap at the same time
        报错原因:
        因为容器的内存限制应该小于或等于已设置的内存交换(memoryswap)限制。
        Docker要求内存限制不超过内存交换限制,以确保容器在合理范围内使用内存。
        为了解决这个问题,需要同时更新内存和内存交换限制。

        3、加入指定虚拟内存参数

        docker update --memory 2g --memory-swap 2g 5eb9b08ebe30

        4、重启容器,观察生效情况

            docker start 5eb9b08ebe30




        文章转载自巴韭特锁螺丝,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论