docker前台进程和系统init进程的冰与火之歌

2018-05-17  本文已影响0人  孤远

终于搞定了

将/usr/sbin/init换成/usr/lib/systemd/systemd  --system  --unit=basic.target

实际上,前者是后者的符号链接,真正执行的是后者。

两者执行的时候都同样会卡住,卡住是啥意思呢,stackoverflow的原话是no return,即它执行完了,停在那里了,没有退出它的执行上下文,一直停在了那里,即没有回到可以输入Linux命令的状态,啥都不能输入!!

但是,但是,但是,

前者执行必须要占用PID 1号进程,后者也不是1号进程。

但是,但是,但是,

Docker的机制是只能有一个前台进程,而且是PID 1号进程!!

明白了吗,和/usr/sbin/init冲突了!!

都要用1号进程,但是却只能有一个1号进程。

你死我活,水火不相容,将业务进程(业务进程设置成后台,命令后面加个&)和/usr/sbin/init,放在一个sh脚本中,/sbin/init一执行,开始上位,业务进程就得被杀死,就得退位。

上一篇下一篇

猜你喜欢

热点阅读