ENTRYPOINT
ENTRYPOINT有两种形式:
ENTRYPOINT ["executable", "param1", "param2"]
(exec 形式,推荐)ENTRYPOINT command param1 param2
(shell 形式)
ENTRYPOINT
允许你配置一个容器作为可执行的。
例如,下面的会使用默认的内容启动nginx,监听80端口:
docker run -i -t --rm -p 80:80 nginx
docker run <image>
的命令行参数会附加到ENTRYPOINT
的exec 形式后,并且会覆盖所用使用CMD
指定的元素。这允许把参数传入到entry point。例如,docker run <image> -d
会传输-d
参数到entry point。你可以覆写ENTRYPOINT
指令使用docker run --entrypoint
命令。
shell形式会保证任何CMD
或run
的命令行参数不会被使用。但是有不好的一点,你的ENTRYPOINT
会被作为/bin/sh -c
的子命令,是不会传输信号的。这以为着你执行的东西不是PID 1
,并且不会收到Unix的信号。因此你执行的东西是不会收到docker stop <container>
的SIGTERM
信号。
只有Dockerfile
中的最后一个ENTRYPOINT
指令会生效。