自定义Docker镜像不会inheritanceCMD

我有一个使用下面的Dockerfilebuild立的图像:

FROM php:7-fpm COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint RUN chmod +x /usr/local/bin/docker-entrypoint ENTRYPOINT ["docker-entrypoint"] 

它使用以下bash脚本的自定义入口点:

 #!/bin/bash set -e echo "STARTING PHP FPM, CMD $@" docker-php-entrypoint "$@" 

在Dockerfile中定义的父映像的命令是CMD ["php-fpm"]

现在我期待这个命令在我的图像中被inheritance。 但是,当我运行图像时,该命令是空的。 以下是docker run命令的输出:

启动PHP FPM,CMD

但是,如果我将CMD ["php-fpm"]复制到我的自定义Dockerfile ,则输出为

启动PHP FPM,CMD php-fpm

[01-Nov-2017 20:04:02]注意:fpm正在运行,pid 7

[01-Nov-2017 20:04:02]注意:准备处理连接

为什么父母的CMD指令不被inheritance?

这种行为试图更直观,但我同意这有点混乱。 你在这里看到原来的问题 。 这个问题是大多数人在一个子图像中定义ENTRYPOINT不再需要来自父图像的CMD

通过当前的行为,如果在子图像中定义了一个ENTRYPOINT ,则父图像中的CMD将被清空,因此如果需要设置,则需要重新定义它。