
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该容器镜像包含Ruby 2.2,作为构建Ruby 2.2应用程序的https://github.com/openshift/source-to-image基础镜像。用户可选择基于红帽企业Linux(RHEL)或CentOS的构建器镜像:RHEL镜像可在红帽容器目录获取,镜像名为`registry.access.redhat.com/rhscl/ruby-22-rhel7`;CentOS镜像可在https://hub.docker.com/r/centos/ruby-22-centos7/获取,镜像名为`centos/ruby-22-centos7`。生成的镜像可使用http://docker.io运行。
Ruby 2.2容器镜像是构建和运行各种Ruby 2.2应用程序及框架的基础平台。Ruby是一种解释型脚本语言,适用于快速简便的面向对象编程,具有处理文本文件和执行系统管理任务的多种功能(类似Perl),其特点是简单、直观且可扩展。
要使用独立的https://github.com/openshift/source-to-image构建简单的https://github.com/sclorg/s2i-ruby-container/tree/master/2.2/test/puma-test-app应用,并通过http://docker.io运行生成的镜像,请执行以下步骤:
bash$ s2i build https://github.com/sclorg/s2i-ruby-container.git --context-dir=2.2/test/puma-test-app/ rhscl/ruby-22-rhel7 ruby-sample-app $ docker run -p 8080:8080 ruby-sample-app
bash$ s2i build https://github.com/sclorg/s2i-ruby-container.git --context-dir=2.2/test/puma-test-app/ centos/ruby-22-centos7 ruby-sample-app $ docker run -p 8080:8080 ruby-sample-app
bash$ curl 127.0.0.1:8080
可在源代码仓库的.sti/environment文件中以键值对形式设置以下环境变量:
RACK_ENV
指定Ruby应用的部署环境(除非被覆盖),可选值:production(生产)、development(开发)、test(测试)。不同环境在日志详细程度、错误页面、Ruby gem安装等方面有不同行为。
注意:仅当RACK_ENV设为production时,才会编译应用资产。
DISABLE_ASSET_COMPILATION
设为true时,将跳过资产编译过程。由于资产编译仅在生产环境中进行,因此该变量仅在RACK_ENV=production时生效,适用于资产已预先编译的场景。
PUMA_MIN_THREADS、PUMA_MAX_THREADS
这两个变量指定https://github.com/puma/puma线程池的最小和最大线程数。
PUMA_WORKERS
指定启动的工作进程数。详见Puma的https://github.com/puma/puma#clustered-mode文档。
RUBYGEM_MIRROR
设置自定义RubyGems镜像URL,用于在构建过程中下载所需的gem包。
要动态获取运行中容器内源代码的变更,需执行以下步骤:
通过Docker的-e参数传递RAILS_ENV=development环境变量,运行构建后的Rails镜像:
bash$ docker run -e RAILS_ENV=development -p 8080:8080 rails-app
应用需使用能在源代码变更时重新加载服务器的gem,推荐以下gem:
需修改https://github.com/openshift/source-to-image#anatomy-of-a-builder-image,确保Web服务器由所选gem启动以检测源代码变更。构建应用镜像后,通过Docker的`-e`参数传递`RACK_ENV=development`:
bash$ docker run -e RACK_ENV=development -p 8080:8080 sinatra-app
使用Docker的exec命令进入容器:
bashdocker exec -it <容器ID> /bin/bash
进入容器后,当前目录为/opt/app-root/src,即源代码所在位置。
可通过PUMA_MIN_THREADS和PUMA_MAX_THREADS环境变量调整每个工作进程的线程数。工作进程数默认由容器可用CPU核心数决定(遵循https://github.com/puma/puma文档推荐),通过cgroup的https://www.kernel.org/doc/Documentation/cgroup-v1/cpusets.txt子系统检测。可通过`--cpuset-cpus`参数指定容器允许使用的CPU核心:
bash$ docker run -e PUMA_MAX_THREADS=32 --cpuset-cpus='0-2,3,5' -p 8080:8080 sinatra-app
工作进程数还受内存限制影响。基础镜像假设每个工作进程需50 MiB基础内存+15 MiB,每个线程需128 KiB。总内存需求公式为:
50 + 15 * 工作进程数 + 0.125 * 工作进程数 * PUMA_MAX_THREADS
可通过--memory参数指定内存限制:
bash$ docker run -e PUMA_MAX_THREADS=32 --memory=300m -p 8080:8080 sinatra-app
若内存限制比CPU核心数更严格,工作进程数会按上述公式自动缩减。也可通过设置PUMA_WORKERS显式指定工作进程数。
Dockerfile及其他源代码见https://github.com/sclorg/s2i-ruby-container。该仓库还包含其他版本Ruby环境的Dockerfile:CentOS的Dockerfile名为`Dockerfile`,RHEL的名为`Dockerfile.rhel7`。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务