引言

最近群里的好多新接触Docker的朋友,好多都遇到了相同的问题,使用

$ docker run -d ubuntu /bin/bash

运行了一个简单的容器后,然后docker ps -a 进行查看, 会发现容器已经退出了。

其实呢,这个问题并不复杂,了解了下面的内容,我想,你就知道该如何处理了.

根源

很重要的要说明的一点: Docker容器后台运行,就必须有一个前台进程.
容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),就是会自动退出的

这个是 docker 的机制问题,比如你的 web 容器,我们以 nginx 和 fpm 为例,
正常情况下,我们配置启动服务只需要启动响应的 service 即可,例如

service nginx start && service php5-fpm start

但是,这样做, nginx 和 fpm 均为后台进程模式运行,就导致 docker 前台没有运行的应用,
这样的容器,后台启动后,会立即自杀,因为他觉得他没事可做了.

解决方法

1. 最佳的解决方案是,将你要运行的程序以前台进程的形式运行,当然,如果你的容器需要同时启动多个进程,
那么也只需要,或者说只能将其中一个挂起到前台即可.
比如上面所说的 web 容器,我们只需要将启动指令修改为:

service php5-fpm start && nginx -g "daemon off;"

这样,fpm会在容器中以后台进程的方式运行,而nginx则挂起进程至前台运行,这样,就可以保持容器不会认为没事可做而自杀了.

2. 对于有一些你可能不知道怎么前台运行的程序,提供一个投机方案,你只需要在你启动的命令之后,添加类似于 tail top 这种可以前台运行的程序,这里特别推荐 tail ,然后持续输出你的log文件.
还是以上文的web容器为例,我们还可以写成:

service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log

>>>>>END<<<<<<

博客搬运地址

最新文章

  1. 【转】PHP ob_start() 函数介绍
  2. 3.6---双栈排序(CC150)
  3. Haskell 笔记 ③
  4. The command &#39;new_value&#39; for SQLPlus
  5. oracle视图总结
  6. 【转】浅析Windows编程的剪贴板
  7. bzoj3351:[ioi2009]Regions
  8. Your build host version of Xamarin.IOS (release NO.)is too recent to work with the IOS designer
  9. 【Flask】 WTForm表单编程
  10. Codechef March Challenge 2014——The Street
  11. .NET CORE 2.0之 httpcontext
  12. SQL CHECK 约束
  13. SpringBoot笔记十五:任务
  14. 0913_Python初识及变量
  15. 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )
  16. nginx防DOS攻击
  17. 解决报错 Page directive: illegal to have multiple occurrences of contentType with different values (old:
  18. 【JavaScript】使用setInterval()函数作简单的轮询操作
  19. 【最大化平均值】POJ3111-K Best
  20. 【BZOJ】3391: [Usaco2004 Dec]Tree Cutting网络破坏(dfs)

热门文章

  1. JAVA基础——异常--解析
  2. form表单传输多余参数
  3. python 使用time / datetime进行时间、时间戳、日期转换
  4. gulp-file-include 合并 html 文件
  5. mysql连接错误解决(ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option &#39;secure_auth&#39; enabled))
  6. 恶补数论(二) Baby-Step-Giant-Step 大步小步求离散模对数
  7. 离职 mark
  8. java中List遍历删除元素-----不能直接 list.remove()
  9. POJ 2217 Secretary
  10. 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验