在Docker容器中请求特定的Ubuntu版本

大约两个月前,我开始使用Docker,并在一些帮助下得到了一个使用Ruby 1.9.1运行Ubuntu的容器。 这是我的Dockerfile的第一部分:

FROM ubuntu # Add and update apt sources RUN apt-get update; apt-get -y upgrade # Add compiler package and ruby1.9.1 RUN apt-get install -y build-essential ruby1.9.1-dev RUN apt-get install -y nodejs RUN apt-get install -y npm 

最近我的一个朋友想要使用相同的容器,但是当他试图使用该dockerfilebuild立一个图像时,他得到一个消息,说明'Package 'ruby1.9.1-dev' has no installation candidate' Package'ruby1.9.1 'Package 'ruby1.9.1-dev' has no installation candidate' ,我认为这意味着他实际上一个与我不同的Ubuntu实例(14.04 vs 12,一些沿着这些线的东西)

我在docker集线器上search了一个ruby 1.9的Ubuntu镜像,看到了一些候选人,但是我不清楚他们是否会工作 – 可能是我自己缺乏理解。

我可以告诉docker我要使用哪个版本的Ubuntu,和/或有更好的方式来完成我们所追求的? 不幸的是,我不能使用Ruby 2.3,因为与我使用的其中一个gem有一些不兼容。

您可以在FROM指令中指定一个版本作为标签,如下所示:

 FROM ubuntu:12.04 

有关更多信息,请参阅FROM文档和ubuntu docker页面 。

你也可以在你的Dockerfile中安装特定版本的ruby:

 RUN apt-get -y install ruby <version-number> 

这是不可能发生的,因为基本的图像是相同的,因此他们应该performance出相同的回购等。或者你或你的朋友可以有一个不同的Ubuntu的图像caching和命名为Ubuntu。

尝试删除这样的图像,并再次从docker中心拉:

 docker rmi ubuntu docker rmi ubuntu:latest docker pull ubuntu 

然后尝试重build。