
Ruby Docker镜像是由Docker官方维护的标准化容器镜像,基于Debian或Alpine等基础系统构建,集成了Ruby编程语言运行环境及相关工具链。该镜像旨在为Ruby应用开发、测试和部署提供一致、隔离的运行环境,支持多种Ruby版本和架构,适用于从简单脚本到复杂Web应用(如Ruby on Rails)的容器化需求。
ruby:<version>:基于Debian Bullseye,包含完整系统依赖,适合生产环境。ruby:<version>-slim:基于Debian Bullseye Slim,精简系统组件,减少镜像体积(比完整版小约40%)。ruby:<version>-alpine:基于Alpine Linux,极致精简(体积通常<100MB),适合资源受限场景,但需注意musl libc与glibc的兼容性差异。ruby:<version>-bullseye/-bookworm:指定Debian具体发行版,确保依赖稳定性。gem包管理器及bundler依赖管理工具。gem install直接安装RubyGems,bundle install解析Gemfile依赖。-slim或-alpine变体)。通过Docker Hub拉取镜像,格式为:
bashdocker pull ruby:<tag>
标签(tag)说明:
标签格式为<ruby-version>-<variant>,例如:
3.3:Ruby 3.3,基于Debian Bullseye完整版。3.2-slim:Ruby 3.2,基于Debian Slim。3.1-alpine3.19:Ruby 3.1,基于Alpine 3.19。3.3.0-bullseye:Ruby 3.3.0,指定Debian Bullseye发行版。完整标签列表可参考https://hub.docker.com/_/ruby%E3%80%82
1. 交互式Ruby shell
启动Ruby交互式解释器(irb):
bashdocker run -it --rm ruby:3.3 irb
-it:交互式终端。--rm:退出后自动删除容器。2. 运行本地Ruby脚本
执行当前目录下的script.rb:
bash# 假设本地存在 script.rb(如:puts "Hello, Docker!") docker run --rm -v "$PWD":/app -w /app ruby:3.3 ruby script.rb
-v "$PWD":/app:将当前目录挂载到容器内/app目录。-w /app:设置工作目录为/app。1. 创建Dockerfile
在Rails应用根目录创建Dockerfile:
dockerfile# 基于slim变体减少体积 FROM ruby:3.3-slim # 安装系统依赖(Rails需Node.js、Yarn等) RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ nodejs \ yarn \ && rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 复制Gemfile及依赖锁文件,优先安装gem依赖(利用Docker层缓存) COPY Gemfile Gemfile.lock ./ RUN bundle install --jobs 4 --retry 3 # 复制应用代码 COPY . . # 预编译资产(如CSS/JS) RUN bundle exec rails assets:precompile # 暴露Rails默认端口 EXPOSE 3000 # 启动命令 CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]
2. 构建并运行镜像
bash# 构建镜像 docker build -t my-rails-app . # 运行容器(映射3000端口) docker run -p 3000:3000 my-rails-app
适用于开发环境(含数据库联动),创建docker-compose.yml:
yamlversion: '3.8' services: rails-app: build: . ports: - "3000:3000" volumes: - .:/app:cached # 本地代码挂载(实时同步修改) - gem_cache:/usr/local/bundle # 缓存gem依赖(加速重建) environment: - RAILS_ENV=development - DATABASE_URL=postgres://postgres:postgres@db:5432/myapp_development depends_on: - db db: image: postgres:15-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=myapp_development volumes: gem_cache: # 持久化gem缓存 postgres_data: # 持久化数据库数据
启动服务:
bashdocker-compose up --build
| 变量名 | 说明 | 默认值 |
|---|---|---|
BUNDLE_PATH | bundle install的依赖安装路径 | /usr/local/bundle |
BUNDLE_BIN | bundle binstubs生成路径 | $BUNDLE_PATH/bin |
RAILS_ENV | Rails环境(开发/测试/生产) | development(开发环境) |
RACK_ENV | Rack应用环境(如Sinatra) | development |
GEM_HOME | RubyGems安装路径 | 同BUNDLE_PATH |
标签通常由<ruby-version>-<variant>-<distro-version>组成,例如:
3.3.0:Ruby 3.3.0,基于Debian Bullseye完整版。3.2-slim:Ruby 3.2.x最新补丁版,基于Debian Bullseye Slim。3.1.4-alpine3.19:Ruby 3.1.4,基于Alpine 3.19。nokogiri旧版本)可能需要额外配置(如安装musl-dev、gcc)。3.3.0-slim而非3.3),避免自动更新导致兼容性问题。--rm参数,配合日志收集工具(如ELK)保留容器日志。Gemfile和Gemfile.lock,利用Docker层缓存减少重复安装依赖耗时。--user指定非root用户运行容器,降低权限风险(需在Dockerfile中创建用户)。您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务