在没有明确调用的情况下,Docker容器中的二进制文件不会被启动

我正在build立我自己的官方图像Dockerfile,因为它是基础,我正在调整与Ansible简单的configuration更改。 dockerfile的相关部分:

FROM php:7.0-fpm MAINTAINER hyperfocus # Ansible cmds EXPOSE 9000 CMD [“php-fpm”] 

每当图像被build立,我尝试启动docker run php_fpm_prod:v0.1它给了我错误: /bin/sh: 1: [“php-fpm”]: not found

但是每当我尝试用docker run php_fpm_prod:v0.1 php-fpm它就会成功启动:

 [03-Nov-2015 10:24:38] NOTICE: fpm is running, pid 1 [03-Nov-2015 10:24:38] NOTICE: ready to handle connections 

我怎样才能使docker run php_fpm_prod:v0.1行为像docker run php_fpm_prod:v0.1 php-fpm

谢谢。

一个PHP fpm Dockerfile的CMD ["php-fpm"]已经是CMD ["php-fpm"] (覆盖debian-jessie CMD ),所以你不需要再指定它。

那些debian或者PHP的fpm Dockerfile没有定义一个ENTRYPOINT ,这意味着默认的应用/bin/sh -c

首先,确保在“ Dockerfile CMD command not found ”中使用正确的引号:

 CMD ["php-fpm"] 

(或者根本不指定CMD ,因为它将从基本图像inheritance)