
# 启动命令
启动容器就是启动主进程，但有些时候，启动主进程前，需要一些准备工作。比如MySQL类的数据库，可能需要一些数据库配置、初始化的工作，这些工作要在最终的MySQL服务器运行之前解决。这些操作，可以在制作镜像时通过在Dockerfile文件中设置ENTRYPOINT或CMD来完成，如下所示的Dockerfile中设置了**ENTRYPOINT \["top", "-b"\]**命令，其将会在容器启动时执行。
```
FROM ubuntu
ENTRYPOINT ["top", "-b"]
```
![](https://support.huaweicloud.com/usermanual-cci2/public_sys-resources/notice_3.0-zh-cn.png)
启动命令必须为容器镜像支持的命令，否则会导致容器启动失败。
在云容器实例中同样可以设置容器的启动命令，例如上面Dockerfile中的命令，只要在创建容器组时配置容器的高级设置，选择生命周期启动命令，先单击"添加运行命令"，输入"top"命令，再单击"添加运行参数"，输入参数"-b"，如下图所示。
图1启动命令   
![](https://support.huaweicloud.com/usermanual-cci2/zh-cn_image_0000001909106737.png "点击放大")
由于容器引擎运行时只支持一条ENTRYPOINT命令，云容器实例中设置的启动命令会覆盖掉制作镜像时Dockerfile中设置的ENTRYPOINT和CMD命令，其规则如下表所示。
| 镜像Entrypoint | 镜像CMD          | 容器运行命令    | 容器运行参数        | 最终执行                 |
|:---|:---|:---|:---|:---|
| \[touch\]    | \[/root/test\] | 未设置       | 未设置           | \[touch /root/test\] |
| \[touch\]    | \[/root/test\] | \[mkdir\] | 未设置           | \[mkdir\]            |
| \[touch\]    | \[/root/test\] | 未设置       | \[/opt/test\] | \[touch /opt/test\]  |
| \[touch\]    | \[/root/test\] | \[mkdir\] | \[/opt/test\] | \[mkdir /opt/test\]  |
   
