为什么一些docker镜像在运行时需要命令?

Why do some docker images require a command when run?

我发现使用docker run时,有时不需要添加"命令",而有时必须添加"命令"。例如,运行ubuntu映像时,不需要命令:

1
2
# docker run ubuntu
#

运行mstormo/suse时:

1
2
3
4
# docker run mstormo/suse
Error response from daemon: No command specified
# docker run mstormo/suse bash
#

那么这与指定的图像相关吗?


Docker映像可以选择包含一个默认命令,当命令行上没有给定命令时运行该命令。

如果没有给出默认命令,则必须由调用方提供。

如果你看Ubuntu的dockerfile,他们有

1
CMD ["/bin/bash"]

所以如果你不这么说,它会为你运行bash

mstormo/suse中没有这样的设置。