在用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谢谢。
已邀请:
把docker run 的命令想成一个进程,echo 后,进程结束,docker 自然就退出。 如果要运行mysql,需要加后台运行参数
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail), 就是会自动退出,这个是docker的机制问题 可以在启动命令后面加上tail -f xxx.log
@ozbillwang @tony_lit O(∩_∩)O谢谢。那我知道什么原因了。非常感谢哦。
请问一下楼主,最后是怎么解决这个问题的,我的问题跟你应该是一样的,就是想在启动容器的时候执行一下容器中的shell命令,但是在执行了`docker run -it --privileged=true kkk1 /bin/bash -c 'sh ./init.sh'` 命令之后,容器就是 Exited 的状态。

要回复问题请先登录注册