Docker简介
docker 对外宣称的作用是”Build,Ship and Run Any App,Anywhere“,即通过对应的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)生命周期进行管理,达到应用组件级别的”一次封装,到处运行“。这里的组件,既可以是一个web应用、一个编译环境,也可以是一台数据库平台服务,甚至是一个操作系统或集群。
基于Linux平台上的多项开源技术,docker提供了高效、敏捷和轻量级的容器方案,并支持部署到本地环境和多种主流云平台。可以说docker首次为应用的开发、运行和部署提供了”一站式“的实用解决方案。
Container 发展历史
LXC(Linux Containers)
- 1979 年,Unix v7 系统支持 chroot,为应用构建一个独立的虚拟文件系统视图。
- 1999 年,FreeBSD 4.0 支持 jail,第一个商用化的 OS 虚拟化技术。
- 2004 年,Solaris 10 支持 Solaris Zone,第二个商用化的 OS 虚拟化技术。
- 2005 年,OpenVZ 发布,非常重要的 Linux OS 虚拟化技术先行者。
- 2004 年 ~ 2007 年,Google 内部大规模使用 Cgroups 等的 OS 虚拟化技术。
- 2006 年,Google 开源内部使用的 process container 技术,后续更名为 cgroup。
- 2008 年,Cgroups 进入了 Linux 内核主线。
- 2008 年,LXC(Linux Container)项目具备了 Linux 容器的雏型。
- 2011 年,CloudFoundry 开发 Warden 系统,一个完整的容器管理系统雏型。
- 2013 年,Google 通过 Let Me Contain That For You (LMCTFY) 开源内部容器系统。
- 2013 年,Docker 项目正式发布,让 Linux 容器技术逐步席卷天下。
- 2014 年,Kubernetes 项目正式发布,容器技术开始和编排系统起头并进。
- 2015 年,由 Google,Redhat、Microsoft 及一些大型云厂商共同创立了 CNCF,云原生浪潮启动。
- 2016 年 - 2017 年,容器生态开始模块化、规范化。CNCF 接受 Containerd、rkt项目,OCI 发布 1.0,CRI/CNI 得到广泛支持。
- 2017 年 - 2018 年,容器服务商业化。AWS ECS,Google EKS,Alibaba ACK/ASK/ECI,华为 CCI,Oracle Container Engine for Kubernetes;VMware,Redhat 和 Rancher 开始提供基于 Kubernetes 的商业服务产品。
- 2017 年 - 2019 年,容器引擎技术飞速发展,新技术不断涌现。2017 年底 Kata Containers 社区成立,2018 年 5 月 Google 开源 gVisor 代码,2018 年 11 月 AWS 开源 firecracker,阿里云发布安全沙箱 1.0。
- 2020 年 - 202x 年,容器引擎技术升级,Kata Containers 开始 2.0 架构,阿里云发布沙箱容器 2.0….
docker优点
Docker 是开发人员和系统管理员使用容器开发,部署和运行应用程序的平台。使用Linux容器部署应用程序称为容器化。
容器化越来越受欢迎,因为容器是:
1、灵活:即使是最复杂的应用也可以集装箱化
2、轻量级:容器利用并共享主机内核
3、可互换:您可以即时部署更新和升级
4、便携带:您可以在本地构建,部署到云,并在任何地方运行。
5、可扩展:您可以增加并自动分发容器副本
6、可堆叠:您可以垂直和即时堆叠服务
docker架构
)
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。
Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。
Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。
docker 核心概念
核心概念
docker大部分的操作围绕着三个概念:镜像、容器和仓库。
镜像
docker 镜像类似于虚拟机镜像,可以将他理解为一个制度模板。
容器
docker 容器类似于一个轻量级的沙箱,docker利用容器来运行和隔离应用。
仓库
docker 仓库类似于代码仓库,是docker集中存放镜像文件的场所。
公开仓库(public)
私有仓库(Private)