- ENTRYPOINT 参数用法时,CMD会变成它的最后参数;如果有命令行参数,这个参数会覆盖CMD和ENTRYPOINT的参数。
- ENTRYPOINT shell用法时,忽略CMD和命令行的参数
CMD 不管何种用法,命令行如果有命令覆盖CMD的命令。
很混乱,实验记录:
ENTRYPOINT 参数
FROM centos:7.9.2009
CMD [“ThisIsCmd”]
ENTRYPOINT [“/bin/echo”,“Hello”]
# docker build -t ep/arg:1 .
# docker run -it ep/arg:1 CLI
Hello CLI
# docker run -it ep/arg:1
Hello ThisIsCmd
ENTRYPOINT shell
FROM centos:7.9.2009
CMD [“ThisIsCmd”]
ENTRYPOINT “/bin/echo” “Hello”
# docker run -it ep/shell:1
Hello
# docker run -it ep/shell:1 CLI
Hello
CMD 参数
FROM centos:7.9.2009
CMD [“echo”, “ThisIsCmd”]
# docker run -it cmd/arg:1
ThisIsCmd
# docker run -it cmd/arg:1 echo "CLI"
CLI
CMD shell
FROM centos:7.9.2009
CMD echo “ThisIsCmd”
# docker run -it cmd/shell:1
ThisIsCmd
# docker run -it cmd/shell:1 echo "cli"
cli