来自基本 Docker 图像的文件是否应该出现在派生图像中?

Should files from a base Docker image be present in a derived image?

我正在创建一个使用基础映像的 Dockerfile:dockerfile/rabbitmq。

在 rabbitmq 的 Dockerfile 中,有一行用于将脚本安装到映像中:

ADD bin/rabbitmq-start /usr/local/bin/

在我的 Dockerfile 中没有这一行。我有自己的 ADD 行。

当我 运行 图像时,所有 rabbitmq 二进制文件和配置都在那里,连同我的东西,但是任何地方都没有 rabbitmq-start 脚本。

为什么我的图像中没有它? (当然,如果我 运行 基本图像 dockerfile/rabbitmq 文件就在那里。)ADD 不是 "inherited" 派生图像吗?

似乎对我有用:

  1. 我克隆了 dockerfile/ubuntu 并在本地构建,
  2. 我克隆了 dockerfile/rabbitmq 并在本地构建,
  3. 我克隆了 your repository 并在本地构建了它。

正在启动映像中的 shell:

docker run -it --rm gzoller/world bash

我看到 rabbitmq 图像添加的 rabbitmq-start 脚本以及安装在您的图像中的 start 脚本:

[ root@d0044b91278e:/data ]$ ls /usr/local/bin/
rabbitmq-start  start