在 docker 容器内使用 RVM 等版本管理器是一种不好的做法吗?

2024-03-27

我是使用 docker 的新手,到目前为止我无法找到许多包含的 ruby​​/rails 图像RVM or rbenv.

我看到的最常见的事情是每个容器有多个tags每个标记的图像版本都有only one安装的 Ruby 版本。看到这个image https://hub.docker.com/_/ruby/例如。

使用其他版本的唯一方法是为您正在使用的映像使用另一个标签,因为您无法使用 RVM 或 rbenv 安装新版本。

这是故意的吗?

在 docker 容器内使用编程语言的版本管理器是一种不好的做法吗?

Why?


这在 docker 中被认为是一种不好的做法或反模式。 RVM 正在尝试解决 docker 正在解决的类似问题,但采用了截然不同的方法。 RVM 专为将所有工具安装在一个位置的主机或虚拟机而设计。 Docker 创建了一个隔离的环境,其中仅包含运行单个应用程序所需的工具。

容器在理想情况下是简约的,仅包含应用程序所需的先决条件,使它们更加便携。 Docker 还使用层和联合文件系统来为每个映像重用公共基础映像,因此 Ruby 版本 X 之类的任何副本只会下载并写入磁盘一次(忽略对该映像的更新)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 docker 容器内使用 RVM 等版本管理器是一种不好的做法吗? 的相关文章

  • 如何将行为设置为投票而不需要用户登录?

    我试图允许用户无需登录 注册即可对线程进行投票 以提高用户参与度 我该怎么做呢 目前 我当前的流程是将投票与访问者的 IP 地址联系起来 以防止多次投票 但另一个问题是 request remote ip 没有为我提供正确的 IP 我在学校
  • 红宝石 Rspec。获取所有测试的列表

    我对 Rspec 进行了一些测试 如下所示 describe description do before each do do before end it something 1 do end it something 2 do end e
  • Rancher 外部子域

    我需要为 docker 容器中的应用程序设置子域 而不是在内部牧场主网络中 而是供公共使用 我已将域委托给牧场主服务器 并且目录中几乎所有堆栈都有主机属性 但它不起作用 我想我需要使用一些 rancher dns 委托域或设置 nginx
  • 切换到 zsh 会破坏命令行中的轨道

    我最近刚刚转而使用 zsh 和 oh my zsh 但在使用 Rails 命令行工具时遇到了问题 以下是我执行的步骤以及收到的错误 我运行了github页面提供的curl命令 curl L https github com robbyrus
  • 有没有办法查看 Docker for Windows 上的容器磁盘使用情况?

    我很好奇除了作为容器映像一部分的层之外 是否还有一种方法可以查看正在运行的 Windows 容器使用了多少磁盘空间 基本上 容器自创建以来 增长 了多少 在 Linux 或在 HyperV 中运行的 Linux 容器 中 这将是docker
  • Rails 接受_nested_attributes_for 回调

    我有两个型号Ticket and 票务评论 TicketComment 是 Ticket 的子项 票证 rb class Ticket lt ActiveRecord Base has many ticket comments depend
  • Amazon ECS - 在 Docker 入口点上使用 IAM 角色时权限被拒绝

    我正在寻找一种将机密 证书注入 Amazon ECS 容器的方法 就我而言 它是一个简单的 nginx 容器 我一直在使用 AWS Parameter Store 关注这篇文章 https aws amazon com blogs comp
  • Kubernetes:无法创建存储库

    我正在跟进Kubernetes 入门指南 http kubernetes io docs hellonode 一切都很顺利 直到我跑步 gcloud docker push gcr io
  • 活动存储 has_many_attached 正在清除以前的上传

    我正在尝试将更多文件添加到 has many attached 中 但是当我上传新文件时 先前的文件将被清除 上传多个文件确实会添加多个文件 但它们也会在下次上传时被清除 这是有意的行为吗 如果是这样 我该如何防止清除 log rb cla
  • 在 Alpine Docker 容器上安装 OpenSSH

    第一次运行 alpine docker 容器并尝试 openssh 安装时 会发生以下情况 ole T docker run it rm alpine bin ash apk add openssh WARNING Ignoring APK
  • 从 Slack 机器人访问 Slack 文件

    我需要一个能够接收和保存从 Slack 聊天室发送的文件的 Slack 机器人 问题是 slack 不发送文件内容 而是发送指向该文件的链接数组 其中大多数 包括下载链接 都是私有的 无法通过机器人访问 它确实发送了一个公共链接 但该链接指
  • 如何基于现有镜像创建新的docker镜像?

    我刚刚开始使用docker 我使用 docker 文件创建图像 如何从现有图像创建新图像 假设你有一个容器bd91ca3ca3c8正在运行 并且您希望在容器中进行更改后创建一个新映像 生成另一个图像将允许您保留您的更改 在这种情况下你可以运
  • 当用户应该有权访问他拥有的交易时,Rspec 测试失败,用户被重定向

    在我的应用程序中 借助 Cancan 我允许客户访问他自己的优惠 当我用浏览器 手动 尝试时它有效但我未能实施 rspec 测试 客户无法访问其他客户的交易 只能访问他自己的交易 管理员通过 Active Admin 界面授予他访问权限 就
  • 稍后如何附加到正在运行的 Docker 容器?

    我想简单地启动一个 docker 容器来执行一些 java 代码 最终启动 JBoss 这工作正常 只是我不知道如何再次连接到容器并返回到 bash 提示符 这就是我启动容器的方式 docker run i t p 80 80 v tmp
  • 将 Ruby 程序作为 Windows 服务运行?

    是否可以将 ruby 应用程序作为 Windows 服务运行 我看到有一个相关的问题讨论运行Java 应用程序作为 Windows 服务 https stackoverflow com questions 25530 best method
  • 未找到命令/使用自动测试通过“捆绑安装”安装缺少的 gem 二进制文件

    我对 RoR 完全陌生 我正在关注迈克尔 哈特尔的书 我无法运行自动测试 请提出问题所在以及解决方案 当我在 Rails 项目目录中的命令行运行 自动测试 时 我得到以下信息 bash autotest command not found
  • 连接表时,rails 在访问连接表中的字段时无论如何都会发出额外的请求

    我有公司表和城市表 公司属于城市 我的数据库架构的一部分是 create table companies force true do t t string title default null false t string address
  • RSpec 请求 - 如何为所有请求设置 http 授权标头

    我正在使用 rspec 请求来测试 JSON API 该 API 需要在每个请求的标头中包含 api key 我知道我可以这样做 get v1 users janedoe json HTTP AUTHORIZATION gt Token t
  • Rails Turbolinks 长请求不显示页面加载

    在 Rails 中使用 Turbolinks 如果请求花费很长时间 无论是预期的还是非预期的 浏览器都没有通常的提示来显示任何事情正在发生 我创建了一个要点 它使用加载对话框来解决此问题 如果请求花费的时间超过 500 毫秒 这是可配置的
  • 拆分为不同的换行符

    现在我正在做一个split在字符串上并假设用户的换行符是 r n像这样 string split r n 我想做的事分为两部分 r n要不就 n 那么正则表达式将如何分割其中的任何一个呢 你试过了吗 r n The 使得 r选修的 用法示例

随机推荐