我如何链接Dockerfile中的文件?

我试图创build一个Dockerfile,将部署rails应用程序,但我的问题是ruby不会安装如果我使用docker文件。 它说/ dev / fd丢失。 在一台普通的机器上,我所要做的就是input命令ln -sf /proc/self/fd /dev/fd ,所有的都是固定的。 但是,当我把这个命令放在我的Dockerfile中时,它不会链接到/ dev / fd。 这是我的Dockerfile:

 # Select ubuntu as the base image FROM ubuntu # Install nginx, nodejs and curl RUN apt-get update -q RUN apt-get install -qy nginx RUN apt-get install -qy curl RUN apt-get install -qy nodejs RUN echo "daemon off;" >> /etc/nginx/nginx.conf # Install rvm, ruby, bundler RUN curl -sSL https://get.rvm.io | bash -s stable RUN ln -sf /proc/self/fd /dev/fd RUN echo "source /usr/local/rvm/scripts/rvm" >> /etc/bash.bashrc RUN /bin/bash -l -c "rvm requirements" RUN /bin/bash -l -c "rvm install 2.1.2" 

我会得到一个类似/ dev / fd的错误:缺less文件或文件夹或类似的东西。 如果我省略了最后一行,所有东西都成功的build立起来了,但是当我login到我刚刚创build的映像时,cd进入了/ dev / fd,它说没有这样的文件或目录。 如何成功构build,但不链接我告诉它的文件?

我试图使用你运行的命令,它试图使/dev/fs/fs

尝试以下方法在/dev/

 RUN ln -sf /proc/self/fd /dev/ 

我的2美分:我鼓励你使用以前创build的容器为你想要的东西,如果你想混合的东西只是从你想要安装的服务读取Dockerfiles我相信你会find你的path,但我仍然build议不重新发明轮docker是为了重新利用,已经有nginx和ruby容器。 另外我觉得在Docker中安装rvm不是一个好主意,如果你只需要一个不同的ruby版本,你只需要下载一个你想要的特定版本的容器。

你可以尝试安装没有rvmruby。 由于您使用的是Docker容器,因此它已经被隔离了,在这种情况下,您不会得到很多(或任何)使用rvm东西。

你可以尝试从1uptalent/ruby-2.1免责声明:这是我公司设置的自动构build )索引上的基础ruby映像构build映像,或者从Dockerfile中借用。 然后在它上面添加你的rails应用程序。

我像在Dockerfiles中那样创build链接 – 但不是在/dev FS上。

你在一个容器中,你可以修改dev FS,但是当你从创build的图像重新启动你的容器时,它会被replace。 请参阅在运行容器中安装:

tmpfs on /dev type tmpfs (rw,nosuid,mode=755)