docker入门学习笔记
1 docker简介
- 基于LXC 的容器引擎
- golang编写
- 核心组件:镜像,仓库,容器
1.1 container VS VMS
http://www.cnblogs.com/wang_yb/p/3923040.html
- container基于kernel的cgroup和namespace
- container相比传统的虚拟机更为轻量(体积小,占用资源小),效率更高(创建、销毁速度快)、性能好(kernel原生态支持)
- 传统虚拟机隔离比较彻底,安全性高
1.2 docker VS container
- docker:基于LXC 的高级容器引擎
- container操作的高级封装,提供接口,快速创建、启动、停止、销毁container等操作
- 提供了container之间数据共享(数据卷)和网络配置(桥接)
- 除此之外,docker还提供了镜像、仓库等功能
2 核心组件
2.1 镜像
http://www.infoq.com/cn/articles/docker-source-code-analysis-part9
- 基础:
- docker容器运行的内容
- 构建或打包阶段
- 一般由开发人员创建、维护、修改
- 标准化操作规范(dockerfile)
- 可以把多个程序打成一个镜像
- 关联概念:
- rootfs + Union mount(aufs等) + image + layer
- 相关操作:
- pull、search、images、tag、inspect、rmi、commit、load、push
2.2 仓库
- 功能
- 存放镜像的地方
- 仓库:
- 默认仓库:hub.docker.com
- 国内仓库:dl.dockerpool.com
- 可以建立私有仓库
- 相关操作:
- pull、push、search
2.3 容器
- 功能
- 镜像的执行者
- 提供了container之间数据共享(数据卷) + 网络(桥接功能 + 独立的ip/port)
- 组成:
- 一个镜像格式:image
- 一系列标准的操作:镜像打包规范 + 执行
- 一个执行环境:container
- 相关操作
- 创建、启动、stop、rm容器
总结
- 优点:
- container操作的高级封装,比传统虚拟机有效率
- 一次打包,可以多次部署
- 保证开发、测试、线上环境一致
- 生态圈比较活跃,多个云平台支持
- 缺点:
- 安全性:container VS VM
- 对于运行时的数据、日志机制不够好