该容器镜像包含Ruby 2.2,作为构建Ruby 2.2应用程序的https://github.com/openshift/source-to-image%E5%9F%BA%E7%A1%80%E9%95%9C%E5%83%8F%E3%80%82%E7%94%A8%E6%88%B7%E5%8F%AF%E9%80%89%E6%8B%A9%E5%9F%BA%E4%BA%8E%E7%BA%A2%E5%B8%BD%E4%BC%81%E4%B8%9ALinux%EF%BC%88RHEL%EF%BC%89%E6%88%96CentOS%E7%9A%84%E6%9E%84%E5%BB%BA%E5%99%A8%E9%95%9C%E5%83%8F%EF%BC%9ARHEL%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8%E7%BA%A2%E5%B8%BD%E5%AE%B9%E5%99%A8%E7%9B%AE%E5%BD%95%E8%8E%B7%E5%8F%96%EF%BC%8C%E9%95%9C%E5%83%8F%E5%90%8D%E4%B8%BA%60registry.access.redhat.com/rhscl/ruby-22-rhel7%60%EF%BC%9BCentOS%E9%95%9C%E5%83%8F%E5%8F%AF%E5%9C%A8https://hub.docker.com/r/centos/ruby-22-centos7/%E8%8E%B7%E5%8F%96%EF%BC%8C%E9%95%9C%E5%83%8F%E5%90%8D%E4%B8%BA%60centos/ruby-22-centos7%60%E3%80%82%E7%94%9F%E6%88%90%E7%9A%84%E9%95%9C%E5%83%8F%E5%8F%AF%E4%BD%BF%E7%94%A8http://docker.io%E8%BF%90%E8%A1%8C%E3%80%82
Ruby 2.2容器镜像是构建和运行各种Ruby 2.2应用程序及框架的基础平台。Ruby是一种解释型脚本语言,适用于快速简便的面向对象编程,具有处理文本文件和执行系统管理任务的多种功能(类似Perl),其特点是简单、直观且可扩展。
要使用独立的https://github.com/openshift/source-to-image%E6%9E%84%E5%BB%BA%E7%AE%80%E5%8D%95%E7%9A%84https://github.com/sclorg/s2i-ruby-container/tree/master/2.2/test/puma-test-app%E5%BA%94%E7%94%A8%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87http://docker.io%E8%BF%90%E8%A1%8C%E7%94%9F%E6%88%90%E7%9A%84%E9%95%9C%E5%83%8F%EF%BC%8C%E8%AF%B7%E6%89%A7%E8%A1%8C%E4%BB%A5%E4%B8%8B%E6%AD%A5%E9%AA%A4%EF%BC%9A
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%E7%BA%BF%E7%A8%8B%E6%B1%A0%E7%9A%84%E6%9C%80%E5%B0%8F%E5%92%8C%E6%9C%80%E5%A4%A7%E7%BA%BF%E7%A8%8B%E6%95%B0%E3%80%82
PUMA_WORKERS
指定启动的工作进程数。详见Puma的https://github.com/puma/puma#clustered-mode%E6%96%87%E6%A1%A3%E3%80%82
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%EF%BC%8C%E7%A1%AE%E4%BF%9DWeb%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%94%B1%E6%89%80%E9%80%89gem%E5%90%AF%E5%8A%A8%E4%BB%A5%E6%A3%80%E6%B5%8B%E6%BA%90%E4%BB%A3%E7%A0%81%E5%8F%98%E6%9B%B4%E3%80%82%E6%9E%84%E5%BB%BA%E5%BA%94%E7%94%A8%E9%95%9C%E5%83%8F%E5%90%8E%EF%BC%8C%E9%80%9A%E8%BF%87Docker%E7%9A%84%60-e%60%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92%60RACK_ENV=development%60%EF%BC%9A
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%E6%96%87%E6%A1%A3%E6%8E%A8%E8%8D%90%EF%BC%89%EF%BC%8C%E9%80%9A%E8%BF%87cgroup%E7%9A%84cpusets%E5%AD%90%E7%B3%BB%E7%BB%9F%E6%A3%80%E6%B5%8B%E3%80%82%E5%8F%AF%E9%80%9A%E8%BF%87%60--cpuset-cpus%60%E5%8F%82%E6%95%B0%E6%8C%87%E5%AE%9A%E5%AE%B9%E5%99%A8%E5%85%81%E8%AE%B8%E4%BD%BF%E7%94%A8%E7%9A%84CPU%E6%A0%B8%E5%BF%83%EF%BC%9A
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%E3%80%82%E8%AF%A5%E4%BB%93%E5%BA%93%E8%BF%98%E5%8C%85%E5%90%AB%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%ACRuby%E7%8E%AF%E5%A2%83%E7%9A%84Dockerfile%EF%BC%9ACentOS%E7%9A%84Dockerfile%E5%90%8D%E4%B8%BA%60Dockerfile%60%EF%BC%8CRHEL%E7%9A%84%E5%90%8D%E4%B8%BA%60Dockerfile.rhel7%60%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务