LXC 和 Docker 联系及区别
首先不管是 Docker
还是 LXC
其实都与 cgroup 有关,Docker 1.8 之前使用 LXC(Linux Containers) 基础上实现的,之后开发了 libcontainer(现在是 opencontainers/runc),意味着自己基于cgroup
内核框架实现了一套,可以参考: StackOverflow
Runc 核心原理
主要对 OS 级别中的 cgroup 进行再次封装,进行了很多容器级别针对性的优化,主要为了去 LXC 化而产生的层。
注意:此项目从原有 Docker 项目剥离, 目前改名 Moby.
Containerd 核心原理
容器的运行时框架 containerd
层,此框架包装了一系列的技术,主要含有 runc
框架、swarmkit
框架、LibNetwork
框架等等,此项目已经包含了所有容器技术核心所需的技术。
注意:此项目从原有 Docker 项目剥离, 目前改名 Moby,并捐献给了 CNCF。
Moby
此项目目前被剥离成主要围绕应用层,配置管理,客户端CLI工具之类的。
IBM资料
FAQ
容器杀掉后如何让应用优雅退出?
命令
docker stop
会先发SIGTERM
然后超时再发SIGKILL
- JAVA中可以利用下面代码监控SIGTERM
- 点击查看相关参考文档1
Runtime.addShutdownHook();