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

主要是文件系统的问题,性能差,还有bug,而且内核过老