📜  Docker 中的 CMD 或入口点 (1)

📅  最后修改于: 2023-12-03 15:14:46.285000             🧑  作者: Mango

Docker 中的 CMD 或入口点

在 Docker 中,可以使用 CMDENTRYPOINT 指令来指定容器的入口。这两个指令可以用于在容器启动时执行特定的命令,例如启动应用程序、初始化数据等。

CMD指令

CMD 指令是用于在容器启动时执行默认命令或指定命令的指令。

语法

CMD的语法有两种形式:

  • CMD [“executable”,“param1”,“param2”]:用于执行指定的命令,可以指定参数。
  • CMD command param1 param2:用于执行默认命令,可以指定参数。
示例
# CMD语法示例
FROM alpine 
CMD ["echo","Hello World!"]

上面的示例中,容器启动时会执行 echo "Hello World!" 命令。

注意事项
  • 只能有一个 CMD 指令,如果指令多于一个,只有最后一个会生效。
  • 如果有 ENTRYPOINT 指令,则 CMD 指令会作为 ENTRYPOINT 命令的参数。
ENTRYPOINT指令

ENTRYPOINT 指令是用于在容器启动时执行特定命令的指令。不同于 CMD 指令, ENTRYPOINT 指令的参数是不可替换的,即不管在启动容器时传入什么参数, ENTRYPOINT 指令都会被执行。

语法

ENTRYPOINT 指令的语法有两种形式:

  • ENTRYPOINT [“executable”,“param1”,“param2”]:用于执行指定的命令,可以指定参数。
  • ENTRYPOINT command param1 param2:用于执行默认命令,可以指定参数。
示例
# ENTRYPOINT语法示例
FROM alpine 
ENTRYPOINT ["echo","Hello World!"]

上面的示例中,容器启动时会执行 echo "Hello World!" 命令。

注意事项
  • 只能有一个 ENTRYPOINT 指令,如果指令多于一个,只有最后一个会生效。
  • 如果有 CMD 指令,则 CMD 指令会作为 ENTRYPOINT 命令的参数。
CMD 和 ENTRYPOINT 的区别
  • 当使用 CMD 指令时,可以在启动容器时传入参数来替换 CMD 中指定的默认参数,而 ENTRYPOINT 指令的参数是不可替换的。
  • ENTRYPOINT 指令是用于保证容器始终运行的关键命令,而 CMD 指令则是可选的、用于指定默认行为的。
总结

以上是关于 Docker 中 CMDENTRYPOINT 指令的介绍。在实际使用中,应根据需要决定使用哪种指令来指定容器的入口。