Java 扩展docker容器

Java 扩展docker容器,java,docker,Java,Docker,我是Docker的新手,我对从Docker存储库中提取Docker映像后扩展它的可能性有疑问。我特别需要Ubuntu14.04、java和R的docker图像。我看到有三个分别的图像。我的问题是新提取的图像的Dockerfile在哪里,以便我可以扩展它们?存储库本质上是您的名称空间。所以你需要拉图像,你做到了。如果您仔细想想,该文件位于容器中 列出所有图像——SudoDocker图像——将显示文件的位置 列表项--在docker容器中运行shell$sudo docker运行“您的文件名” 现在

我是Docker的新手,我对从Docker存储库中提取Docker映像后扩展它的可能性有疑问。我特别需要Ubuntu14.04、java和R的docker图像。我看到有三个分别的图像。我的问题是新提取的图像的Dockerfile在哪里,以便我可以扩展它们?

存储库本质上是您的名称空间。所以你需要拉图像,你做到了。如果您仔细想想,该文件位于容器中

  • 列出所有图像——SudoDocker图像——将显示文件的位置
  • 列表项--在docker容器中运行shell<代码>$sudo docker运行“您的文件名”
  • 现在我们在Docker容器中。我们可以使用ls命令列出所有文件
  • 如果需要,创建自己的目录,但要回答您的问题,您可以在#3处停止
  • 从这里,您可以将图像添加到您自己的注册表中,然后将其从那里拉出来,这确实使类似操作更容易
  • 为了简单起见,你只需要做数字1,也可能是数字2就可以了 当然当我尝试它时,#2也是我做的,但它列出了文件 创建自己的目录时添加到自己的注册表

    如果需要,请查看本“教程”:


    还可以查看文档

    DockerFile用于生成映像,但您无法执行反向操作

    如果要扩展现有映像,有两种解决方案

    • 在容器中运行映像,进行更改,然后提交到新映像
    • 以所需图像为基础编写Dockerfile。(Dockerfile的第一行应该是myimage中的
      • 当然可以。 您可以下载docker映像,对其进行更改,并使用新名称(和标记)生成(AKA commit)一个新映像。 要更改容器,可以手动或使用Dockerfile进行更改。
        我不确定我是否能在一个答案中给出所有步骤,但如果你遵循这个小指南,我相信你可以在10分钟或更短的时间内得到这个想法:

        docker pull
        命令只需拉一个预构建的图像。您的本地计算机上没有Dockerfile。但是您可以从Docker Hub找到原始Dockerfile。如果您使用itzg/ubuntu-openjdk-7
        image,您可以访问它的在线存储库

        Dockerfile在Dockerfile选项卡上可用(只有“自动生成”存储库在Docker Hub上有Dockerfile选项卡)

        下面是来自的另一个Dockerfile

        没有自动合并两个或多个Dockerfile的方法,但是您可以像下面那样合并这两个Dockerfile

        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
        命令进行构建

        $ 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上的Docker文件扩展和创建(几乎)任何包含您第一手需要的软件包的图像。

        自动合并多个图像是不可能的,但通常情况下,Docker文件很容易使用Java和R创建您自己的版本(如果您想要的话)

        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
        
        一些上游容器还使用DockerFile中的
        ONBUILD
        条目,只有当它们的映像通过
        FROM
        条目包含在另一个容器中时,才会运行某些内容

        如果您找到一个满意的java容器,只需使用dockerfile创建您自己的图像,并在顶部使用java something。然后添加R。您使用的所有
        docker run…
        参数(entrypoints和cmd)将仍然有效,即使您通过
        包含容器

        如果你需要攻击现有的容器,这也是可能的。看看我为在gitlab容器上启用oauth而创建的东西(在他们正式启用oauth之前)。在那里,我扩展了原始图像,并添加了我自己的配置tweek集

        $ 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/.