Docker火热的容器
Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎。PaaS(Platform as a Service) 是位于IaaS和SaaS模型之间的一种云服务。
Docker 最初是 dotCloud 公司发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新。
行业竞争太过激烈公司都要混不下去了,这时dotCloud的领导层做了一个大胆的决定,将项目开源。 2013 年 3月Docker以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。
甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。
容器生态系统
一个软件项目成功与否的一个重要特征,是能否带动一个生态系统的发展,以Docke为代表的容器技术显然做到了这一点。
当然,容器技术的迅猛发展与其强大的生态系统息息相关。下面通过2张图来整体审视一下它。
从图中可以看出,容器技术的生态系统自下而上分别覆盖了IaaS层和PaaS层涉及的各类问题,包括资源调度、编排、部署、监控、配置管理,存储网络管理,安全,容器化应用支撑平台等。
容器与云计算
20世纪集装箱彻底颠覆了全球运输业和世界经济。而今天,云计算领域的容器就像集装箱一样,正在改变世界。
Docker 目前已经得到了众多公有云平台的支持,并成为除虚拟机之外的核心云业务。
除了 亚马逊云AWS、Google、Azure、Docker 官方云服务等,国内的各大公有云厂商,腾讯云、阿里云等基本上都同时支持了虚拟机服务和容器服务,甚至还专门推出了容器云业务。
为什么说 docker 是快速部署?
我们做一个项目,最不想面对的不是开发,也不是调试,而是部署!!!
比如我们使用Python开发了一个项目,我们的环境是 Python3 ,然而客户1使用的是 Python2 ,客户2根本没有 Python 环境。这个时候我们就需要先去新机器上部署 Python。
Python部署完成后,项目里面还要用到 MySQL,安装完Python 的MySQL模块。项目里面还有 redis, 两种非对称加密,还有三方队列,还有阿里云的接口……
假设,我们把服务装进了 docker 中会怎样呢?
首先安装docker,再把做好的镜像使用命令 pull 了下来,再使用命令 docker start XXXXXX,部署就完成了。只要你的环境安装了docker,部署轻松又简单。
你说多服务?那就写个docker-compose.file,同学集群部署了解一下,有Kubernetes、Mesos,Fleet和Swarm 任君挑选。(Swarm,Docker 三剑客项目之一,后面会有介绍)
Docker基本概念
镜像( Image )
容器( Container )
仓库( Repository )
理解了这三个概念,就理解了 Docker 的整个生命周期。
❶ Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
❷ 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,类似于沙盒,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。
❸ 仓库( Repository )是集中存放镜像的地方。与之很容易混淆的概念是注册服务器( Registry )。注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址dl.dockerpool.com/ubuntu 来说,dl.dockerpool.com 是注册服务器地址, ubuntu 是仓库名。
Docker 三剑客
Docker Compose 项目
Docker Machine 项目
Docker Swarm 项目
❶ Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速的部署分布式应用。
在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose 恰好满足了这样的需求。它允许用户通过一个单独的dockercompose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose 中有两个重要的概念:
■ 服务 ( service ):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
■ 项目 ( project ):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用Compose 来进行编排管理。
❷ Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护。
Docker Machine 是一个工具,它允许你在虚拟宿主机上安装 Docker Engine ,并使用 docker-machine 命令管理这些宿主机。你可以使用 Machine 在你本地的 Mac 或 Windows box、公司网络、数据中心、或像 AWS 或 Digital Ocean 这样的云提供商上创建 Docker 宿主机。
❸ Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是Docker 官方对容器云生态进行支持的核心方案。
使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。
相关产品 >
-
OKA40i-C开发板
国产工业级,高清输出,丰富接口|OKA40i开发板采用底板+核心板结构,基于全志工控行业平台级处理器四核Cortex-A7 A40i设计,主频1.2GHz,集成MAli400MP2 GPU,内存1GB/2GB DDR3L,存储8GB eMMC。 全志A40i工控行业芯片平台 A40i为国产工控行业芯,全志A40i处理器代表了Allwin在智能工业控制领域的成就。飞凌嵌入式A40i系列OKA40i-C开发板是飞凌推出的一款中国芯,全国产级工业级开发板,适用于适用于基于视觉交互的工业控制产品 了解详情 -
OKT507-C 开发板
CPU: T507 工业级处理器,超低功耗,10年+生命周期|推荐全志工业级T507开发板系列,飞凌OKT507-C开发板采用全志T507 四核工业级处理器 T507设计开发,Cortex-A53架构,工业级宽温,性能强,低功耗,是一款高性价比的工业级产品,提供丰富的开发设计资料,提供产品规格书,软硬件手册等,全志的T507适用于车载电子、电力、医疗、工业控制、物联网、智能终端等领域。
了解详情 -
OKMX8MP-C开发板
内置NPU、ISP,AI计算能力高达2.3TOPS|飞凌嵌入式i.MX8MP 系列-NXP iMX8M Plus 开发板 基于高性能低功耗工业级iMX8MP核心板设计,支持多种多种高速通信接口。iMX8MP开发板内置NPU,AI计算能力2.3TOPS,支持4K,支持双图像信号处理器(ISP),是一款支持LinuxQT/android操作系统的iMX8MP开发板。
了解详情 -
OK3568-C开发板
强而稳,国产芯,1Tops算力,多路高速接口|飞凌RK3568系列RK3568开发板基于国产工业级AI处理器RK3568四核64位Cortex-A55 处理器设计。RK3568作为国产化高性能处理器,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,瑞芯微RK3568芯片是一款定位中高端的通用型SoC,NPU达到1Tops,飞凌RK3568系列核心板提供瑞芯微RK3568规格书_datasheet_数据手册_原理图等,