我试图理解Dockerfile中的ENTRYPOINT
和docker run --entrypoint
之间的差异。 ENTRYPOINT
的exec
形式允许多个参数,
# Source: https://docs.docker.com/engine/reference/builder/#entrypoint
ENTRYPOINT ["executable", "param1", "param2"]
但是 docker run --entrypoint=executable
只接受一个。很多示例展示了如何用参数重写 ENTRYPOINT
,但他们也指定了 CMD
:
docker run --entrypoint=executable image:latest param1 param2
是否存在技术限制阻止直接使用 docker run --entrypoint
等效于 ENTRYPOINT ["可执行文件", "参数1", "参数2"]
?Docker Compose 似乎支持它。
Is there a technical limitation that prevents a direct docker run --entrypoint
equivalent to ENTRYPOINT ["executable", "param1", "param2"]
? Docker Compose seems to support it.
# Source: https://docs.docker.com/compose/compose-file/compose-file-v3/#entrypoint
entrypoint: ["php", "-d", "memory_limit=-1", "vendor/bin/phpunit"]
其他与Docker合作的提供商也是如此(例如AWS ECS)。或者,内部可能会将[...entrypoint_args, ...command_args]
实际上调整为[entrypoint,...command]
以使其与docker run
兼容?
CMD
而不是ENTRYPOINT
。 - David Maze