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发行版。完整标签列表可参考Docker Hub Ruby镜像页。
启动Ruby交互式解释器(irb):
bashdocker run -it --rm ruby:3.3 irb
-it:交互式终端。--rm:退出后自动删除容器。执行当前目录下的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。在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"]
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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429