- 讲英语程序自动部署到容器
- Go 语言开源引擎 Github 地址
- 2013 年 dotCloud
- 基于 Apache 2.0 开源授权协议发行
- 提供简单轻量的建模方式
- 职责的逻辑分离
- 快速高效的开发生命周期
- 鼓励使用面向服务的架构
- 使用 Docker 容器开发、测试、部署服务。
- 创建隔离的运行环境
- 搭建测试环境
- 构建多用户的平台即服务(PaaS)基础设施
- 提供软件及服务(SaaS)应用程序
- 高性能、超大规模的宿主机部署
- 容器的基石,容器都是基于镜像启动和运行。镜像好比容器源代码。
- 层叠的只读系统,底层是文件引导系统 bootfs。
- 联合加载(union mount)一次加载多个文件系统,外面只能看到一个,可以有父子镜像。
- Docker |add Apache | |add emacs | |rootfs(Ubuntu)| <- 基础镜像 |bootfs |
- 通过镜像启动
- 当一个容器启动时候,Docker 会在镜像最顶层加一个读写文件系统,在 docker 运行的程序都是在这个层中 |可写层 | |add Apache| |add emacs | |rootfs(Ubuntu)| <- 基础镜像 |bootfs |
- 写时复制(copy on write)
- 公有仓库 DockerHub
- 私有仓库
- 编程语言 封装 --> 代码隔离
- 操作系统 系统资源的隔离 进程 网络 文件系统...
- PID(Process ID) 进程隔离
- NET(Network) 管理网络接口
- IPC(InterProcess Communication) 管理跨进程通信的访问
- MNT(Mount) 管理挂载点
- UTS(Unix Timesharing System) 隔离内核和版本标识
- 用来分配资源
- 来源 google
- Linux Kernel
- 资源限制
- 优先级设定
- 资源计量
- 资源控制
- 文件系统隔离:每个容器都有自己的 root 文件系统
- 每个容器都运行在自己的进程环境中
- 容器间的虚拟网络接口和 IP 地址都是分开的
- 资源隔离和分组:使用 cgroups 将 CPU 和内存之类的资源独立分配至每个 Docker 容器