扩展docker集装箱

我是新来的Docker,我有一个问题,关于从docker仓库中拉出泊坞窗图片后可能会延长。 我需要特别是与Ubuntu 14.04,Java和Rdocker图像。我看到有三个分别与他们的图像。 我的问题是新拉图像的Dockerfile在哪里,所以我可以扩展它们?

Dockerfiles是为了build立图像,但你的逆操作是不可能的。

如果你想扩展一个现有的图像,你有2个解决scheme。

docker pull命令只是拉一个预build的图像。 本地机器上没有Dockerfile。 但是你可以从Docker Hub中find原始的Dockerfile。 如果您使用itzg/ubuntu-openjdk-7映像,则可以访问它的联机存储库。

https://registry.hub.docker.com/u/itzg/ubuntu-openjdk-7/

Dockerfile在Dockerfile选项卡上可用(只有“Automated Build”存储库在Docker Hub上有Dockefile选项卡)。

 FROM ubuntu:trusty MAINTAINER itzg ENV APT_GET_UPDATE 2014-07-19 RUN apt-get update RUN apt-get install -y openjdk-7-jre-headless ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 

下面是来自edwindj / docker-r的另一个Dockerfile。

 FROM ubuntu:trusty MAINTAINER Edwin de Jonge RUN apt-get update RUN apt-get install -y r-base 

没有办法自动合并两个或多个Docker文件,但是可以像下面那样组合这两个Docker文件。

 FROM ubuntu:trusty RUN apt-get update # Install java RUN apt-get install -y openjdk-7-jre-headless ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64 # Install R RUN apt-get install -y r-base 

并用docker build命令构build它。

 $ docker build nacyot/ubuntu-java-r . 

尝试在基于nacyot / ubuntu-java-r映像的容器上使用java和R命令。

 $ docker run -it nacyot/ubuntu-java-r cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.1 LTS" $ docker run -it nacyot/ubuntu-java-r java -version java version "1.7.0_55" OpenJDK Runtime Environment (IcedTea 2.4.7) (7u55-2.4.7-1ubuntu1) OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode) $ docker run -it nacyot/ubuntu-java-r R --version R version 3.0.2 (2013-09-25) -- "Frisbee Sailing" Copyright (C) 2013 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under the terms of the GNU General Public License versions 2 or 3. For more information about these matters see http://www.gnu.org/licenses/. 

它工作正常。

没有什么魔力,但是你可以通过在Docker Hub上引用Dockerfiles来扩展和build立(几乎)所有你需要的包的图像。

Repository是你的命名空间,本质上是。 所以你需要把图像,你做的。 该文件位于容器中,如果你仔细想一想。

  1. 列出所有图像sudo docker图像 – 将显示文件的位置。
  2. 列表项 – 在Docker容器中运行一个shell。 $ sudo docker run "your filename"
  3. 现在我们在Docker容器中。 我们可以使用ls命令列出所有的文件。
  4. 如果需要的话创build你自己的目录,但要回答你的问题,你可以在#3停止。
  5. 从这里你可以将图像添加到你自己的registry中,然后从那里把它拉出来,这真的使得更容易。

为了简单,你真的只需要做数字1和可能2。 当我尝试的时候,#2也是我做的一个,但是当你创build自己的目录时,列出了要添加到你自己的registry中的文件。

查看这个“教程”,如果需要的话: Docker知识库教程

另外检查文档! Docker文档

你当然可以。 您可以下载一个Docker镜像,将其更改并使用新名称(和标签)生成(AKA提交)新镜像。 要更改容器,可以手动执行或使用Dockerfile。 我不确定我是否可以在一个答案中给你所有的步骤,但是如果你遵循这个小指南,我相信你可以在10分钟或更短时间内得到这个想法: https : //docs.docker.com/userguide/dockerimages/ #创build-我们-自己的图像

合并几个图像是不可能自动的,但是Dockerfiles经常可以很容易地用R和Java创build你自己的版本(如果你想要的话)。

一些上游容器也在他们的dockerfiles中使用ONBUILD https://docs.docker.com/reference/builder/#onbuild条目来让某些东西只有当他们的图像通过FROM条目被包含在另一个中时才能运行。

如果你find一个你感到满意的java容器,只需要用dockerfile和FROM java-something创build你自己的图像。 然后添加R.即使你通过FROM包含容器,所有docker run ...参数(入口点和cmd)仍然可以工作。

如果你需要破解现有的容器,这也是可能的。 看看我创build的启用gitlab容器上的oauth(在他们正式使用之前)@ https://github.com/xeor/dockerfiles/tree/master/gitlab 。 在那里,我正在扩大原始图像,并添加我自己的一套configuration镊子。