自定义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
将被清空,因此如果需要设置,则需要重新定义它。