- https://my.oschina.net/jamesview/blog/2994112
- 初探
- 版本
- GO语言
- 基于内核的cgroup、namespace对进程进行封装隔离
大家虽然都共用一个内核和某些运行时环境(例如一些系统命令和系统库),但是彼此却看不到,都以为系统中只有自己的存在。这种机制就是Container,利用linux系统内核namespace【Net,UTS,IPC,User,Pid,Mount】来做权限的隔离控制,利用 cgroups 来做资源分配。 - 基于操作系统层面的虚拟化技术
- 为什么要用
- 资源利用率高
- 磁盘
- 内存
- 性能
- 启动时间快
- 可以保证环境一致性
- 便于维护
- 轻量级运行
- 便于自动化
- 资源利用率高
- 与VM的差别
- 基本概念
- 镜像
- 相当于root文件系统
- 分层存储
- 容器
- 实质上是一个进程,但它是运行在一个隔离的环境中
- 运行时会创建一个容器存储层:容器运行时读写而准备的存储层
- 仓库
- registry
- harbor
- 加速器
- 镜像
- 三剑客
- Machine(负责在多种平台上快速安装 Docker 环境)
- SwarmKubernetes\Mesos\Rancher
- 分v1、v2版本
- 1.12后自带v2
- Compose
- 最佳实践
- 要专一
- 尽量减少镜像大小(alpine)
- 避免垃圾(安装无用的软件或不需要的文件)
- 在保证Dockerfile可读性的情况下减少构建层数
- 构建缓存加快构建速度
- 保证容器的无状态
- 尽量不要使用root去运行
主要是文件系统的问题,性能差,还有bug,而且内核过老
- tips