Docker 再学习 (1)

Submitted by Lizhe on Thu, 01/24/2019 - 16:34

自从2013年接触docker以来已经过去了6年, 最近在学习Kubernetes的时候发现自己有好多docker新特性不知道

是时候重新深入学习再学习一遍docker了

1. 容器规范

除了docker之外还有rkt ( CoreOS ) 等其他容器. 为了保证不同容器之间能兼容, 若干公司成立了Open Container Initiative ( OCI ) 组织

目前有 runtime spec 和 image format spec 两个规范, 不同组织和厂商开发的容器能够在不同的runtime上运行, 保证了可移植性

2. runtime

目前主流的三种runtime有 lxc , runc 和 rkt

lxc 是linux上老牌的容器runtime , docker 最初也是使用lxc作为runtime的

runc 是docker自己开发的容器runtime , 符合oci规范, 也是docker现在正在使用的runtime

rkt 是CoreOS开发的容器runtime, 符合oci规范, 能够运行docker容器

3. 容器管理工具

容器管理工具对内与runtime交互, 对外为用户提供 interface ( CLI )

lxd 是 lxc 对应的管理工具

docker engine 是runc对应的管理工具, 分为 deamon 和 cli 两部分

rkt cli 是 rkt 对应的管理工具

4. 容器定义工具

容器定义工具允许用户定义容器的内容和属性

docker image, dockerfile, ACI ( App Container Image, rkt的image格式 )

5. Registry

存储image的仓库

6. 容器OS

容器OS是专门运行容器的操作系统. 与常规OS相比, 容器OS体积更小, 启动更快

7. 容器平台技术

编排引擎, 管理平台和基于容器的PaaS 都是容器平台技术的一部分

1) 容器编排引擎

docker swarm 是 Docker 开发的容器编排引擎

Kubernetes 是Google的编排引擎

mesos 是一个通用的集群资源调度平台

2) 容器管理平台

Rancher 和 ContainerShip

3) 基于容器的PaaS

Deis, Flynn 和 Dokku

8. 容器支持技术

1) 容器网络

docker network

flannel

weave

calico

2) 服务发现

etcd, consul 和 zookeeper

3) 监控

sysdig, cAdvisor/Heapster 和 Weave Scope

4) 数据管理

rex-ray

5) 日志管理

docker logs

6) 安全性

OpenSCAP