容器启动命令
启动容器就是启动主进程,但有些时候,启动主进程前,需要一些准备工作。比如MySQL类的数据库,可能需要一些数据库配置、初始化的工作,这些工作要在最终的MySQL服务器运行之前解决。这些操作,可以在制作镜像时通过在Dockerfile文件中设置ENTRYPOINT或CMD来完成,如下所示的Dockerfile中设置了ENTRYPOINT ["top", "-b"]命令,其将会在容器启动时执行。
FROM ubuntu ENTRYPOINT ["top", "-b"]

启动命令必须为容器镜像支持的命令,否则会导致容器启动失败。
在云容器实例中同样可以设置容器的启动命令,例如上面Dockerfile中的命令,只要在创建负载时配置容器的高级设置,先单击“添加”,输入“top”命令,再单击“添加”,输入参数“-b”,如下图所示。

由于容器引擎运行时只支持一条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] |

