自定义Docker镜像不继承CMD

sup*_*r.t 9 docker dockerfile

我有一个使用以下Dockerfile构建的图像:

FROM php:7-fpm
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
ENTRYPOINT ["docker-entrypoint"]
Run Code Online (Sandbox Code Playgroud)

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

#!/bin/bash
set -e
echo "STARTING PHP FPM, CMD $@"
docker-php-entrypoint "$@"
Run Code Online (Sandbox Code Playgroud)

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

现在我希望这个命令可以在我的图像中继承.但是,当我运行图像时,命令为空.这是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指令没有继承?

BMi*_*tch 10

这种行为试图更直观,但我同意这有点令人困惑.你在这里看到原始问题.这个问题是大多数人ENTRYPOINT在儿童图像中定义不再需要CMD父图像.

使用当前行为,如果ENTRYPOINT在子图像中定义一个子图像,则CMD父图像将为空,因此如果需要设置它,则需要重新定义它.