我必须在运行docker容器时提供命令吗?

时间:2016-04-08 09:42:56

标签: docker centos

我想在centos:6.6容器上安装mysql服务器。

但是,当我运行docker run --name myDB -e MYSQL_ROOT_PASSWORD=my-secret-pw -d centos:6.6时,出现docker: Error response from daemon: No command specified.错误。

docker run --help检查文档,我发现执行COMMANDdocker run似乎是一个可选参数。这是因为[COMMAND]放在一对方括号内。

  

$ docker run --help

     

用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG ...]

     

在新容器中运行命令

我还发现official repository of mysql在启动MySQL容器时没有指定命令:

  

启动MySQL实例很简单:

     

$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

为什么我在运行centos:6.6容器时提供命令,但在运行mysql容器时却不是这样?

我猜测可能是centos:6.6是专门配置的,因此用户在运行时必须提供命令。

1 个答案:

答案 0 :(得分:3)

如果您使用centos:6.6,则需要在发出" docker run"时提供命令。命令。

mysql的官方存储库没有指定命令的原因是因为它在它的docker文件中有CMD命令:CMD [" mysqld"]。检查它的泊坞窗文件here

在没有命令的情况下运行容器时,docker文件中的CMD是默认命令。

您可以阅读here以更好地了解您可以在docker文件中使用的内容。

在您的情况下,您可以

  1. 启动您的centos 6.6容器
  2. 将官方mysql docker文件作为参考,发出类似的命令(将apt-get更改为yum(如果你不使用默认的root用户,则更改为sudo yum)
  3. 一旦你能成功启动mysql,你就可以将所有命令放入docker文件中,只是为了确保第一行是"来自centos:6.6"
  4. 构建您的形象
  5. 使用您的图片运行容器,然后您不需要在docker run中提供命令
  6. 您可以在docker hub中共享docker文件,以便其他人可以使用您的。
  7. 祝你好运。