Java 扩展docker容器
我是Docker的新手,我对从Docker存储库中提取Docker映像后扩展它的可能性有疑问。我特别需要Ubuntu14.04、java和R的docker图像。我看到有三个分别的图像。我的问题是新提取的图像的Dockerfile在哪里,以便我可以扩展它们?存储库本质上是您的名称空间。所以你需要拉图像,你做到了。如果您仔细想想,该文件位于容器中Java 扩展docker容器,java,docker,Java,Docker,我是Docker的新手,我对从Docker存储库中提取Docker映像后扩展它的可能性有疑问。我特别需要Ubuntu14.04、java和R的docker图像。我看到有三个分别的图像。我的问题是新提取的图像的Dockerfile在哪里,以便我可以扩展它们?存储库本质上是您的名称空间。所以你需要拉图像,你做到了。如果您仔细想想,该文件位于容器中 列出所有图像——SudoDocker图像——将显示文件的位置 列表项--在docker容器中运行shell$sudo docker运行“您的文件名” 现在
还可以查看文档 DockerFile用于生成映像,但您无法执行反向操作 如果要扩展现有映像,有两种解决方案
- 在容器中运行映像,进行更改,然后提交到新映像李>
- 以所需图像为基础编写Dockerfile。(Dockerfile的第一行应该是myimage中的
)
- 当然可以。
您可以下载docker映像,对其进行更改,并使用新名称(和标记)生成(AKA commit)一个新映像。
要更改容器,可以手动或使用Dockerfile进行更改。
我不确定我是否能在一个答案中给出所有步骤,但如果你遵循这个小指南,我相信你可以在10分钟或更短的时间内得到这个想法:
docker pull
命令只需拉一个预构建的图像。您的本地计算机上没有Dockerfile。但是您可以从Docker Hub找到原始Dockerfile。如果您使用itzg/ubuntu-openjdk-7image,您可以访问它的在线存储库
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/.