当前位置: 首页 > 面试题库 >

如何在Docker中正确安装RVM?

壤驷向明
2023-03-14
问题内容

这就是我的Dockerfile

RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
RUN curl -L https://get.rvm.io | bash -s stable
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install 2.3.3"

工作正常,但是,当我启动容器时,看到以下内容:

$ docker -it --rm myimage /bin/bash
/root# ruby --version
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
/root# /bin/bash -l -c "ruby --version"
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]

显然,这不是我想要的。据我了解,问题是默认情况下bash不会运行/etc/profile。这就是为什么Ruby不是来自RVM安装的原因。我该如何解决?


问题答案:

长话短说:

docker -it --rm myimage /bin/bash 命令不会将bash作为登录shell启动。

说明:

当您运行$ docker -it --rm myimage /bin/bash没有它的invoke庆典-l,这使得选项bash行为就好像它被调用作为登录shell,rvm初始化依赖于source-ing分词/path/to/.rvm/scripts/rvm/etc/profile.d/rvm.sh和初始化是.bash_profile.bashrc或任何其他初始化脚本。

我该如何解决?

如果不这样做,请始终使用rubyfrom rvmadd -l选项。

这是一个Dockerfile,安装rubyrvm

FROM Debian

ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update -q && \
    apt-get install -qy procps curl ca-certificates gnupg2 build-essential --no-install-recommends && apt-get clean

RUN gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
RUN curl -sSL https://get.rvm.io | bash -s
RUN /bin/bash -l -c ". /etc/profile.d/rvm.sh && rvm install 2.3.3"
# The entry point here is an initialization process, 
# it will be used as arguments for e.g.
# `docker run` command 
ENTRYPOINT ["/bin/bash", "-l", "-c"]

运行容器:

➠ docker_templates : docker run -ti --rm rvm 'ruby -v'
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
➠ docker_templates : docker run -ti --rm rvm 'rvm -v'
rvm 1.29.1 (master) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]
➠ docker_templates : docker run -ti --rm rvm bash
root@efa1bf7cec62:/# rvm -v
rvm 1.29.1 (master) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io/]
root@efa1bf7cec62:/# ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
root@efa1bf7cec62:/#


 类似资料:
  • Docker-V Docker版本1.12.3,构建8EAB29E hp:/var/run#sudo service docker status docker.service-docker应用程序容器引擎 Dec 08 16:04:35 hp Dockerd[11950]:/usr/bin/dockerd:/lib64/libdevmapper.so.1.02:找不到版本`DM_1_02_97'(

  • 我在C:\src中使用这一行 git克隆-B稳定https://github.com/flutter/flutter.git 在路径中,我键入这一行: 一些错误是:

  • 已从deb软件包安装docker1.6,但在运行时出现问题: sudo docker版本客户端版本: 1.6.2客户端API版本: 1.18 Go版本(客户端): go1.4.2 Git提交(客户端): 7c8fca2 OS/Arch(客户端): linux/amd64 FATA[0000]获取超文本传输协议:///var/run/docker.sock/v1.18/version:拨号unix

  • 我正在构建一个新的Docker映像,我希望安装NVM,这样我就可以管理NodeJ了。 阅读关于如何安装NVM的文档时,他们提到,为了开始使用NVM,您需要提供.bashrc文件的源码。

  • 问题内容: 我想创建一个docker镜像并正确安装,因此我选择具有这些属性的基础镜像。因此,的第一行如下: 然后下一个命令是 在创建docker映像时创建了以下错误: 如何能够在此docker映像中安装? 问题答案: 如提示: 获取(13:权限被拒绝) 我相信这是由于您的基本形象: https://github.com/SeleniumHQ/docker- selenium/blob/master

  • 如何在高山容器中安装Docker并运行docker映像?我可以安装,但无法启动docker,并且在运行时获取“docker命令未找到错误”。