防止甲骨文云服务器因闲置而被回收的 Docker 方案

199次阅读
没有评论

近期,甲骨文宣布将对长时间闲置的云服务器进行停机或回收。为避免资源被回收,许多用户尝试通过各种方式来增加服务器的负载,例如使用 shell 脚本循环计算、dd 复制空文件等方式。本文介绍一种较为“洁净”的方法,即将脚本放入 Docker 容器中运行,方便管理且安全可控。

防止甲骨文云服务器因闲置而被回收的 Docker 方案

方法简介

本方案采用一个轻量的 alpine Docker 容器,内部运行一个简单的循环计算脚本,适度提高服务器 CPU 使用率。Docker 管理带来了灵活性,允许随时启动或停止容器,同时可借助 crontab 实现定时控制。

CPU 负载效果

启动容器后,CPU 会持续保持适度负载,满足甲骨文的在线检测条件。


方案实现

使用 Docker 直接运行容器

启动命令

运行以下命令创建并启动容器,容器内执行循环计算,达到 CPU 持续占用的目的:

docker run -d --name keeporaclealive --rm alpine sh -c "while true; do for i in {1..100000}; do j=$((i*i)); done; done"
  • --rm 参数:容器停止后自动删除,避免系统中残留无用的容器。

停止命令

docker stop keeporaclealive

Docker 常驻启动

如果希望容器在服务器重启后自动启动,可使用以下命令:

docker run -d --name keeporaclealive --restart always alpine sh -c "while true; do for i in {1..100000}; do j=$((i*i)); done; done"
  • --restart always 参数:确保服务器重启后容器自动启动。

停止与删除容器

docker stop keeporaclealive        # 停止服务,但容器不会被删除
docker start keeporaclealive       # 再次启动容器
docker rm keeporaclealive          # 停止后删除容器 

使用 Docker Compose 管理容器

若需更便捷的启动与管理,可以使用 Docker Compose。

  1. 创建配置文件
   mkdir keeporaclealive
   cd keeporaclealive
   vi docker-compose.yml
  1. docker-compose.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"'
       restart: always
  1. 启动与停止服务:
   docker-compose up -d    # 启动服务
   docker-compose down     # 停止服务 

使用 Crontab 定时控制

如果不希望容器全天运行,可以设置定时任务,每天 10 点启动,14 点停止。

  1. 编辑 Crontab 任务:
   crontab -e
  1. 添加以下任务:
   0 10 * * * cd /root/keeporaclealive && /usr/local/bin/docker-compose up -d
   0 14 * * * cd /root/keeporaclealive && /usr/local/bin/docker-compose down

总结

此方案利用 Docker 容器控制服务器负载,以防甲骨文服务器因闲置而被回收。通过 Docker Compose 和定时任务的配合,容器启动与停止更为灵活、便捷。

正文完
 0
评论(没有评论)