我有一个Dockerfile,我用来构建相同的图像,但略有不同的目的。大多数时候,我希望它只是一个"环境"。没有一个特定的入口点,所以用户只需在Docker运行行指定:
docker run --rm -it --name ${CONTAINER} ${IMAGE} any_command parameters
但是对于某些应用程序,我希望用户下载容器并运行它,而无需设置命令。
docker build -t ${IMAGE}:demo (--entrypoint ./demo.sh) <== would be nice to have
是的,我可以有一个不同的Dockerfile,或者在构建期间添加一个入口点到基本的Dockerfile,或者其他各种各样的鼠标技巧,但这些都只是一件可能出错的事情,增加复杂性,并且是基本要求的变通方法。
任何想法?了构建?
DockerfileCMD
指令设置默认命令。所以如果你的Dockerfile以
CMD default_command
则可以以多种方式运行图像
docker run "$IMAGE"
# runs default_command
docker run "$IMAGE" any_command parameters
# runs any_command instead
容器必须运行命令;你不能"只是运行一个容器"里面没有进程
您不希望在这里使用ENTRYPOINT
,因为它的语法在命令行中明显难以使用。您的any_command
将作为参数传递给入口点进程,而不是替换内置的默认值。