【问题标题】:Custom Docker image doesn't inherit CMD自定义 Docker 映像不继承 CMD
【发布时间】:2017-11-01 20:07:12
【问题描述】:

我有一个使用以下 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"]

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

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

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 指令?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    这种行为试图更直观,但我同意它有点令人困惑。您会看到original issue here。这个问题是大多数人在子图像中定义ENTRYPOINT 不再需要父图像中的CMD

    在当前行为下,如果您在子图像中定义ENTRYPOINT,则父图像中的CMD 将被清空,因此如果您需要设置它,则需要重新定义它.

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      相关资源
      最近更新 更多