【发布时间】:2021-05-15 21:11:49
【问题描述】:
我试图了解 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 ["executable", "param1", "param2"] 的技术限制? Docker Compose 似乎支持它
# 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用于日常使用,恕我直言。)
标签: docker docker-compose entry-point