容器与编排Container
容器 是什么?
镜像的运行实例,共享宿主机内核的隔离进程
类比:用同一个镜像开出来的多个实例,但比虚拟机轻得多
本质是什么
容器就是被 Namespace 隔离、被 Cgroup 限制资源的普通进程。Namespace 让它看不到别的进程和网络,Cgroup 限制它能用多少 CPU 和内存,rootfs 决定它看到什么文件。
和虚拟机的区别
这是最常被问的问题,一句话:虚拟机虚拟硬件,容器隔离进程。
- 启动:容器秒级,虚拟机分钟级
- 体积:容器 MB 级,虚拟机 GB 级
- 隔离:虚拟机更强(独立内核),容器共享内核
- 密度:一台机器能跑上百容器,十几个虚拟机
生命周期
容器的主进程(PID 1)退出,容器就结束。所以启动脚本要用 exec 把信号传给应用,否则 docker stop 会等 10 秒超时才强杀。