官网解释:https://docs.docker.com/engine/reference/builder/#cmd
自己翻译:
cmd命令的三种格式
CMD ["executable","param1","param2"]
(exec form, this is the preferred form)CMD ["param1","param2"]
(as default parameters to ENTRYPOINT)CMD command param1 param2
(shell form)
注意:如果在dockerfile里出现多个CMD,只有最后一个CMD会生效
第一种用法:运行一个可执行的文件并提供参数。
例如:
FROM ubuntu
CMD ["/usr/bin/wc","--help"]
注意一: cmd使用括号时,第一行的参数如果在指定位置或系统的环境变量找不到就会被当作entrypoint的参数来使用
注意二:cmd 当作命令来使用时,只能解析出一个命令,不能实现ps -aux|grep java类似的写法
注意三:括号里的参数必须使用英文的双引号扩起来
括号模式里的会被解析为一个json array,必须用英文的双引号括起每一个命令
注意四:括号模式可以先呼叫shell 然后再调用其他命令
第二种用法:为ENTRYPOINT指定参数。
如果括号模式里的第一个参数没有被成功解析为一个命令,则会把括号里的所有参数当作entrypoint的参数来使用
第三种用法(shell form):是以”/bin/sh -c”的方法执行的命令。
FROM ubuntu
CMD echo "This is a test." | wc -
注意:
注意:docker run +command可以覆盖cmd参数