📜  dockerfile CMD 命令 - Shell-Bash (1)

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

Dockerfile CMD 命令 - Shell/Bash

在 Dockerfile 中,CMD 命令用于指定容器启动时默认执行的命令。它通常是一个 Shell/Bash 命令,可以是应用程序的启动命令或其他指令。下面是一些关于 CMD 命令的用法和注意事项。

命令语法
CMD command

其中 command 可以是一个 Shell/Bash 命令或应用程序的启动命令。

多种写法

CMD 命令可以有多种写法,分别是:

  • CMD ["executable","param1","param2"]:使用 JSON 数组的形式,推荐使用此写法。
  • CMD command param1 param2:使用 Shell/Bash 命令的形式。
  • CMD [“param1”,”param2”]:和第一种写法类似,但缺少可执行文件名。
命令参数

CMD 命令的参数可以包含多个参数,其中第一个参数通常是应用程序的可执行文件名或 Shell/Bash 脚本文件名,后面的参数则是启动应用程序所需的参数。

例如,使用以下语法可以指定容器默认启动一个 Python Web 应用程序:

CMD ["python3", "app.py"]

其中 python3 是 Python 解释器的可执行文件名,app.py 是要启动的 Python 脚本文件名。

使用 Shell/Bash 命令

CMD 命令也可以使用 Shell/Bash 命令,并且支持命令继续符号 \

例如,使用以下语法可以指定容器默认启动一个使用 Flask 框架的 Python Web 应用程序:

CMD flask run --host=0.0.0.0

其中 flask run --host=0.0.0.0 是 Flask 框架的启动命令,并使用 --host=0.0.0.0 参数将容器的 IP 地址设置为 Flask 应用程序的监听地址。

使用变量

CMD 命令也可以使用环境变量或自定义变量,例如:

CMD ["bash", "-c", "echo Hello $NAME"]

其中 $NAME 是一个环境变量或自定义变量,它的值将在容器启动时替换。

注意事项
  • CMD 命令只能出现一次在 Dockerfile 中,如果在多个地方指定,则只有最后一个 CMD 有效。
  • 使用 CMD 命令时,容器将默认以后台模式启动。
  • 如果在运行容器时指定了命令,则 CMD 命令将被覆盖。
  • 如果使用了 ENTRYPOINT 命令,则 CMD 命令的参数将作为 ENTRYPOINT 命令的默认参数。
总结

CMD 命令是 Dockerfile 中重要的命令之一,它用于指定容器启动时默认执行的命令。使用 CMD 命令可以轻松地启动应用程序或其他指令,也可以使用多种写法、命令参数和变量。当然,还有一些注意事项需要注意。