CMD和ENTRYPOINT
CMD command 这种方式会以 "/bin/sh -c" shell的子进程方式来运行,容器中的PID不为1,不能接受unix信号
CMD ["executable","param1","param2"] 这是一个JSON格式的数组的写法,其中 executable 为要运行的命令, param为要传递给命令的选项和参数,这种格式不会以 "/bin/sh -c"来发起,因此不支持 变量替换以及通配符替换操作,如果要支持的话可以显式的用下面格式来支持: "/bin/bash",“-c”,"executable","paramN",这种方式PID为1;
CMD "param1" ,"param2" 这种方式则为ENTRYPOINT提供默认参数
ENTRYPOINT:
shell模式
进程ID不为1,可以解析变量
exec模式
进程ID为1,不可以解析shell变量
ENTRYPOINT ["top","-b"]
• 如果 ENTRYPOINT 使用了 shell 模式,CMD 指令会被忽略。
• 如果 ENTRYPOINT 使用了 exec 模式,CMD 指定的内容被追加为 ENTRYPOINT 指定命令的参数。
• 如果 ENTRYPOINT 使用了 exec 模式,CMD 也应该使用 exec 模式。