Docker-Compose限制容器CPU/内存使用小记

Docker-Compose限制容器CPU/内存使用小记

由于甲骨文的免费ARM目前是有使用率的要求,长时间较低使用率是会回收机器的,所以我使用了Docker做一个镜像,然后在容器里跑无意义的死循环让CPU长时间处于较高的负载就可以了。

yml配置如下:

version: '3'
services:
  keeporaclealive:
    image: alpine
    command: 'sh -c "while true; do for i in $$(seq 1 100000); do j=$$[i*i]; done; done"'
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 256M
    restart: always

但随之而来的问题是在我使用Docker-Compose的CPU限制后,CPU占用没反应,百思不得其解后,冲浪半天在STACKOVERFLOW的这个帖子发现是Docker-Compose的BUG,题主的Docker-Compose版本为V2.4.1也存在这个BUG,而我的为V2.2,也就是需要升级Docker-Compose版本

随后找了一篇升级的教程看了下,升级步骤很简单,只需要下载替换版本号即可

curl -L https://github.com/docker/compose/releases/download/2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version

结果在我执行完成以后,喜闻乐见的报错了

/usr/local/bin/docker-compose: line 1: Not: command not found

回看了一下curl的进度条,下载看起来有点毛病,大小对不上

图片[1]-Docker-Compose限制容器CPU/内存使用小记-Rain's Blog

这个链接就是简单的获取系统类型然后拼接了一下,看一下获取的信息对不对

图片[2]-Docker-Compose限制容器CPU/内存使用小记-Rain's Blog

发现类型是没问题的,那么问题就是链接本身了,完整拼接应该如下

https://github.com/docker/compose/releases/download/2.21.0/docker-compose-Linux-aarch64

对比一下Github Releases的链接,版本号前居然少了个v

图片[3]-Docker-Compose限制容器CPU/内存使用小记-Rain's Blog

所以正确的升级命令应该是

curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

但还有个问题,为啥网上的教程一眼看过去都不带这个v呢?答案是Docker官方写的文档里就tm是错的,漏了这个v

图片[4]-Docker-Compose限制容器CPU/内存使用小记-Rain's Blog

总结:Docker官方文档还就是那个没谱……不过现在看文档已经更新了

更新到Docker-Compose v2.21.0以后再次执行命令启动容器

docker-compose --compatibility up -d
图片[5]-Docker-Compose限制容器CPU/内存使用小记-Rain's Blog

CPU限制正常运作了

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
评论 抢沙发
头像
说点什么?
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容