是什么样的操作能让 Docker 容器挂掉

2020-07-10 08:35:36 +08:00
 jss
最近上线个小项目,运行一个月后 容器半夜挂掉,由于是半夜没有拿出日志,重新创建容器后继续运行。想问问可能的原因?
6709 次点击
所在节点    Docker
54 条回复
tottea
2020-07-10 08:37:46 +08:00
执行的主进程挂掉,然后没有容器 restart 机制,就直接挂掉了吧
Vhc001
2020-07-10 08:38:20 +08:00
1 、系统内存不足
2 、容器 CPU 占用过高
3 、楼下补充
whileFalse
2020-07-10 08:39:49 +08:00
一楼说的对。二楼是主进程挂掉的一些原因。
luckyrayyy
2020-07-10 08:41:18 +08:00
主进程没了容器就没了
nieqibest
2020-07-10 08:42:23 +08:00
日志采集都没有吗?…
594duck
2020-07-10 08:55:30 +08:00
身为生产 docker 黑。我要灵魂拷问一下。

为什么一定要用 docker,解决了什么问题。

你大概还没受到过 docker 挂一个拖死一台宿主机的倒霉事情
lzp729
2020-07-10 08:58:23 +08:00
@594duck 因为时髦呗...
Niphor
2020-07-10 09:09:00 +08:00
日志 和 容器挂了有什么关系...
Jat001
2020-07-10 09:11:31 +08:00
@594duck 最简单的解决环境问题,不用每台机器安一堆东西,也不用担心不同程序的依赖相互冲突
ohao
2020-07-10 09:14:00 +08:00
我也不喜欢这玩意
但也不能像 6 楼这么说,只能说个人和小公司以及小项目不建议使用

我现在粗浅的理解 一套部署在 docker 内的东西
需要的这东西设计之初 本身就是架构是分离的 (包括读写分离 /数据库分离 /日志分离 /分离一切)
像积木一样模块化, 当某个积木出现瓶颈,就自动复制 /扩容 /加入集群
在配合相对高速的内部网络

Google 不是说每个月有上亿的容器上线吗。。。。。。
caryqy
2020-07-10 09:19:54 +08:00
宿主机执行 update,docker 有更新时也会把运行的容器停用掉
hws8033856
2020-07-10 09:28:14 +08:00
@594duck 那你是没见过某些 zf 单位的项目,服务器没有外网,只是简单装个数据库,各种环境依赖包问题搞死人
不将服务环境打包成镜像的话光部署就得整几天,实施要骂娘了
pcbl
2020-07-10 09:39:10 +08:00
@hws8033856 一般这种情况我会打包个虚拟机
iConnect
2020-07-10 09:54:44 +08:00
@hws8033856 装环境的时候,手机开热点,带一个路由器临时桥接一下。除非单位禁止,临时接入下互联网。
594duck
2020-07-10 09:54:51 +08:00
@hws8033856 JAVA 不就是为了这种情况而生的,once a build always run 。

楼主天生就是 JAVA 项目

另外你说包依赖啥的,根本不是问题,把需要的包都放在 U 盘里就好。生产环境比这个严格的金融企业我们管的更残酷呢,用什么包都得先备案。
594duck
2020-07-10 09:57:14 +08:00
@ohao 上亿 Docker 上线,用我朋友的话就是

我朋友“我们每个月要开设和销毁几万个 Dokcer,如果是你这种虚拟机,光开和关虚拟机时间都来不急”

我“你别装 B,我来给你重复说一次你的话,我们每个月 UP DOWN 几次进程,我根本不用开和关虚拟机”

我朋友“你知道你为什么永远是个破落户,宝山滚地龙,一辈子的打工仔么。因为你不会吹,我都为你着急。人家做运维经理,五年一套房,你做运维经理好了,还要倒贴钱,死抱着自己在外企的教条。装什么纯呀,大家都是出来卖的。”
zy445566
2020-07-10 09:57:19 +08:00
@594duck
部署方便一个 dockerfile 搞定全部,迁移的时候,不用手动装 mysql,redis,nginx 。
自动部署的时候,无论脚本多麻烦,docker 最多三行,build+stop+run
上线屏蔽环境问题,测试 docker 是 centos 线上就是 centos,很多公司机子多,线上测试系统不一样,编译的时候也会有问题。
其实 docker 就是学习成本略高,真正用起来绝对比手动部署爽。
zy445566
2020-07-10 10:02:33 +08:00
@594duck 还有 docker 不是虚拟机,仅仅是进程克隆,你可以理解为读取环境不同于宿主机的进程
594duck
2020-07-10 10:06:15 +08:00
@zy445566 Docker 学习成本高?你是不是对专业的系统工程师有什么误解。。。。我们自己运维的观察 是

“反正我是开发,我不想搞懂那帮 Linux 工程师会的东西,太麻烦了。来看我开一个 Docker,来我从镜像市场里下载一下,唉我启动了。怎么启动的我也不知道,反正就是好了。叫那些运维和系统工程师滚。
”我们用 Docker 解决了 CI/CD 的问题,但是我们认为我们已经可以让运维和系统工程师们走开了“
"2010 年的时候喊的口号是啥来着,测试是耻辱,谁公司有测试谁就是耻辱“
”2018 年开始喊的口号是啥,Docker 淘汰了运维,谁公司有运维谁是耻辱“

我也就笑笑,看看这种口号。因为我见过的几家只有程序 没有运维和测试的真田园敏捷开发,那叫一地鸡毛。要不是中国有强制的”等保“他们这闹剧我还能看很久。

”我“ ”程序员“ ”只要有了 Docker 没有人来再和我 BBBBB 了“

”把测试淘汰了,把运维淘汰了,只要有程序员就可以了“
594duck
2020-07-10 10:09:53 +08:00
@zy445566 我来给你讲讲我一个朋友的公司遇到的 Docker 问题和解决办法。我们听完后笑的肚子痛

朋友公司一台机器开了 5 个 Docker 又快又好,还避免了端口复用问题。简直优雅。

没二天,因为一个 Docker 把内核拉挂了,整个系统都 Carsh 了。

朋友没敢大声说,赶紧找解决办法。因为生产系统频繁出问题。

有人告诉他”xxxcloud 的解决办法是先在物理服务器上开一个 Openstack,再在 Openstack 里开一个虚拟机,在虚拟机里装个系统,在系统里开一个 qemu,在 qemu 里开 docker.这样一个 Docker 拉死的也是一个 Qemu 。“

朋友一拍大腿,对呀,Docker 自己隔离不了环境,那我们让 Qemu 来隔离,简直太美了,太好的方案了。

但是 Qemu 的网络不好呀没事,我们可以引进 SDN 来解决 Qemu 的问题,来我先写个组建。

然后一桌人一边吃饭一边笑的眼泪都出来了。太聪明了,太聪明了。真的太聪明了。。啊哈哈哈哈哈哈哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/688737

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX