java - 扩展 docker 容器

标签 java docker

我是 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/

相关文章:

reactjs - Docker 与子目录组合并实时重新加载

java - 二分查找 - 错误

java - 如何正确使用 wait 和 notify 方法?

java - Bundle 返回 long 而不是 Parcelable

docker - 如何使用NGINX将请求转发到Docker Microservice

docker - 使用apt-get install gcc时Dockerfile构建错误

JavaFX。画一个球并从它的中心拖一条线

从数据库加载后不同格式的Java Date toString

bash - Shell脚本使用grep清理指定的Docker容器

docker - 仅重启 Kubernetes 中的 Sidecar 容器