由于甲骨文的免费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的进度条,下载看起来有点毛病,大小对不上
这个链接就是简单的获取系统类型然后拼接了一下,看一下获取的信息对不对
发现类型是没问题的,那么问题就是链接本身了,完整拼接应该如下
https://github.com/docker/compose/releases/download/2.21.0/docker-compose-Linux-aarch64
对比一下Github Releases的链接,版本号前居然少了个v
所以正确的升级命令应该是
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
总结:Docker官方文档还就是那个没谱……不过现在看文档已经更新了
更新到Docker-Compose v2.21.0以后再次执行命令启动容器
docker-compose --compatibility up -d
CPU限制正常运作了
© 版权声明
文章版权由CC-BY-NC-SA 4.0协议分发共享
THE END
暂无评论内容