我是 Docker 的新手,我有一个关于从 docker 存储库中拉出 docker 镜像后扩展它的可能性的问题。我特别需要带有 ubuntu 14.04、java 和 R 的 docker 图像。我看到它们三个分别有图像。我的问题是新提取的图像的 Dockerfile 在哪里,以便我可以扩展它们?
最佳答案
docker pull
命令只是拉取一个预先构建的图像。您的本地计算机上没有 Dockerfile。但是您可以从 Docker Hub 找到原始的 Dockerfile。如果您使用 itzg/ubuntu-openjdk-7
图像,您可以访问它的在线存储库。
https://registry.hub.docker.com/u/itzg/ubuntu-openjdk-7/
Dockerfile 在 Dockerfile 选项卡上可用(只有“自动构建”存储库在 Docker Hub 上有 Dockerfile 选项卡)。
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
没有自动合并两个或多个 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 上的 Dockerfiles 来扩展和构建(几乎)任何具有您需要的软件包的镜像。
关于java - 扩展 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364409/