Dockerfile,如何创建镜像 ubuntu 14.04

Dockerfile, how to create images ubuntu 14.04

昨天有人问我如何使用 docker 文件

制作 docker 图像

这次我想补充一个问题

如果我想在已安装的图像 docker 上制作 OS ubuntu 14:04,postgresql-9.3.10,请安装 Java JDK6、复制文件(重要位置),并在images上创建用户。

我是否可以根据需要合并多个 docker 文件作为图像? (dockerpostgresql 文件,java,复制文件,并创建一个用户这样一个 docker 文件)

例子。我制作了一个 docker 文件 "ubuntu" 其中包含命令

顶行

# Create dockerfile

# get OS ubuntu to images
FROM ubuntu: 14:04

# !!further adding a command on the following link, below the line per-dockerfile(intends command in dockerfile on the link)

# command on dockerfile postgresql-9.3
https://github.com/docker-library/postgres/blob/ed23320582f4ec5b0e5e35c99d98966dacbc6ed8/9.3/Dockerfile
# command on dockerfile java
https://github.com/docker-library/java/blob/master/openjdk-6-jdk/Dockerfile

# create a user on images ubuntu
RUN adduser myuser

# copy file/directory on images ubuntu
COPY /home/myuser/test /home/userimagedockerubuntu/test

# ?
CMD ["ubuntu:14.04"]

请帮帮我

我认为由于层系统,嵌套多个 Dockerfile 是不可能的。但是,您可以将任务外包给 shell 脚本和 运行 Dockerfile 中的脚本。

请在您的 Dockerfile 中修复基础映像:

FROM ubuntu:14.04

此外,您的 CMD 无效。您可能想执行一个 bash 和 CMD ["bash"],您可以使用它。

不可以,不能合并多个 Dockerfile。

最佳做法是:

  • 从一个imabe开始已经包含了你需要的东西,像这样postgresql image已经基于ubuntu.
    这意味着如果您的 Dockerfile 以:

    开头
    FROM orchardup/postgresql
    

您将构建一个 已经 包含 ubuntu 和 postgresql 的映像。

  • COPYRUN 你在 dockerfile 中需要什么,like for openjdk6:

    RUN \
      apt-get update && \
      apt-get install -y openjdk-6-jdk && \
      rm -rf /var/lib/apt/lists/*
    ENV JAVA_HOME /usr/lib/jvm/java-6-openjdk-amd64
    

最后,您的默认命令应该运行您想要的服务:

# Set the default command to run when starting the container
CMD ["/usr/lib/postgresql/9.3/bin/postgres", "-D", "/var/lib/postgresql/9.3/main", "-c", "config_file=/etc/postgresql/9.3/main/postgresql.conf"]

但是由于 Dockerfile of orchardup/postgresql 已经 包含一个 CMD,您甚至不必指定一个:您将从 CMD 在您的基本图像中定义。

我建议你从 doc on Dockerfile 开始,因为你显然错过了这个,它包含了你问题的所有答案,甚至还有你甚至不想问的问题。