在用docker run创建启动容器时、有个问题一直困扰,请教一下各位


在用docker run创建启动容器时、有个问题一直困扰,请教一下各位:
①启动命令(sudo docker run --name rsw -it rl/myrails echo "hello word"):
如果最后加上"echo 'hello'"或者"ls -l"等command时,
该容器总是处于“Exited (0)”的状态。
就算我用docker start 命令再次去启动该容器、该容器的状态还是“Exited (0)”。

②启动命令
(sudo docker run --name rsw -it rl/myrails /bin/bash
或者 sudo docker run --name rsw -it rl/myrails):
但是如果最后加上"/bin/bash"这个command、或者根本就不传任何command参数时,
该容器可以正常启动、状态为“Up”。
此时即使退出了容器、然后也可以再次用docker start 命令去正常启动该容器的状态为“Up”。

这种情况会导致:比如我在docker run的command中传入mysql启动命令,可是这样通过docker run创建启动容器完、这个容器也就自己exit了。这样这个容器好像也用不了呢。

网上找了很久也没搞清楚原因。
有谁知道这是什么原因么,O(∩_∩)O谢谢。
已邀请:

ozbillwang

赞同来自:


把docker run 的命令想成一个进程,echo 后,进程结束,docker 自然就退出。

如果要运行mysql,需要加后台运行参数

tony_lit

赞同来自:


容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),
就是会自动退出,这个是docker的机制问题
可以在启动命令后面加上tail -f xxx.log

rushi

赞同来自:


@ozbillwang @tony_lit
O(∩_∩)O谢谢。那我知道什么原因了。非常感谢哦。

要回复问题请先登录注册