运行docker集装箱时,我必须提供一个命令吗?
我想在一个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
检查文档,发现COMMAND
似乎是执行docker run
时的可选参数。 这是因为[COMMAND]
放在一对方括号内。
$ docker run –help
用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG …]
在新的容器中运行一个命令
我也发现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是专门configuration的,以便用户在运行时必须提供一个命令。
如果你使用centos:6.6,你需要在发出“docker run”命令时提供一个命令。
mysql官方仓库没有指定命令的原因是因为它的docker文件中有CMD命令:CMD [“mysqld”]。 在这里检查它的docker文件。
docker文件中的CMD是在没有命令的情况下运行容器时的默认命令。
你可以在这里阅读,以更好地理解你可以在docker文件中使用什么。
在你的情况下,你可以
- 开始你的centos 6.6容器
- 以官方的mysql docker文件作为参考,发出类似的命令(把apt-get改成yum(或者如果你不使用默认的root用户,sudo yum)
- 一旦你可以成功启动mysql,你可以把你的所有命令放到你的docker文件中,只要确保第一行是“From centos:6.6”
- build立你的形象
- 用你的镜像运行一个容器,然后你不需要在docker run中提供一个命令
- 您可以在docker中心共享您的docker文件,以便其他人可以使用您的docker文件。
祝你好运。
- SELinux不支持覆盖graphics驱动程序
- 如何从centos 6.4 ssh到没有密码的docker集装箱?
- 在CentOS 7上启动Docker Daemon时出错
- 如何在Centos上安装特定版本的Docker?
- 作业docker.service失败
- 预创build检查错误:“找不到VBoxManage。 确保安装了VirtualBox并且VBoxManage在path“
- 找不到libGL.so.1:Docker中带有centos的Qt GUI应用程序
- Docker exec rpc错误代码= 13 desc =无效的头字段值“oci运行时错误:exec失败:无法执行已运行和停止的容器\ n”
- 我无法在Centos 7中设置Kubernetes:无法更新cniconfiguration