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 模式。

https://www.jb51.net/article/136264.htm

posted @ 2021-04-14 17:44  lavida2000  阅读(125)  评论(0)    收藏  举报