docker是lxc的增强版,不是替代版,其底层也是用lxc实现的
1. 多版本混合部署
一台服务器上部署多个应用或者一个应用的多个版本非常常见。
文件路径,配置信息,端口冲突不可避免
docker的每个容器有自己的文件系统,并通过端口映射解决端口冲突的问题
2.升级回滚
升级通常还有依赖项的版本变更,如果升级失败,会回滚,
docker将新版本放到新容器,就版本的旧容器停掉,直接上新容器,秒级操作完成升级,如果有问题,再秒级操作将版本回滚
3.多租户资源隔离
不同的租户对资源的需求不一样,目前主要采用vm的方式实现,成本高,密度低
docker容器充分利用cgroup技术和linux内核的namespaces提供资源隔离功能。
注:CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物力资源 (如 cpu memory i/o 等等) 的机制,CGroups 也是 LXC 为实现虚拟化所使用的资源管理手段。
4.内部开发环境
开发测试环境一般负载较低,大量的系统资源都被浪费在虚拟机本身的进程上了。
docker容器没有任何CPU和内存上的额外开销,很适合用来提供公司内部的开发测试环境。