📅  最后修改于: 2023-12-03 15:00:30.823000             🧑  作者: Mango
在 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 脚本文件名。
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
命令可以轻松地启动应用程序或其他指令,也可以使用多种写法、命令参数和变量。当然,还有一些注意事项需要注意。