C.1 docker overview

概述

docker 是一个开发、交付和运行的开放平台。docker 能使你的应用和基础设施解耦,从而使软件交付更加的敏捷。docker 能像管理软件一样管理基础设施。利用 docker 的特性,能快速的打包、测试和部署代码,从而明显的减少编写的代码部署到生产环境的周期。

docker 的打包和运行应用程序都是具有独立的环境,体现了其隔离特性。docker 不需要像虚拟机一样去虚拟硬件,而是直接运行在主机的内核上,体现轻量特性。这些特性可以让更多的容器运行在同一个物理机或者虚拟机上。

docker 提供的能力:

  • 将应用放入容器中
  • 让容器作为测试和交付的单元
  • 以容器的形式或者编排服务的形式部署于生产环境。可以是本地数据中心,也可以是云主机

docker 官网介绍:

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.

Docker provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security allow you to run many containers simultaneously on a given host. Containers are lightweight because they don’t need the extra load of a hypervisor, but run directly within the host machine’s kernel. This means you can run more containers on a given hardware combination than if you were using virtual machines. You can even run Docker containers within host machines that are actually virtual machines!

组成结构

docker engine 的组成部分:

  • docker CLI:接收并解析客户端发送来的指令,例如:docker run
  • REST API:用来和 daemon 交互的 API 接口
  • docker daemon:docker 的守护进程,负责执行客户端发送来的命令
C.1 docker overview_第1张图片
image

docker engine 的职能:

  • 管理镜像
  • 管理容器
  • 管理网络
  • 管理卷(挂载在宿主机的文件系统)

体系结构

  • C/S 架构,客户端(Client)和服务端(docker 守护进程-Docker daemon)
  • 客户端负责发送构建(docker build)、拉取(docker pull)、运行(docker run)指令
  • 守护进程负责执行构建、拉取、启动指令
  • 守护进程从仓库(Registry)拉取镜像(Images)
  • 守护进程将本地的镜像启动后变为容器(Containers)
  • 客户端和守护进程之间使用REST api、unix套接字进行通信
  • 客户端和守护进程可以在同一个系统上运行

docker 官方提供的架构图

C.1 docker overview_第2张图片
image

特点

  • 让复杂的安装一条命令解决
  • 让服务秒级启动
  • 让资源最大化使用
  • 隔离性,文件隔离、资源隔离、网络隔离

名词解释

  • 仓库:存放镜像的场所,类似于maven库,npm库
  • 镜像:只读的程序包,类似与jar包,npm包,可以叠加很多层
  • 容器:镜像运行后形成的一个实例,一个镜像可以启动多个容器,类似于jar启动的进程
  • tag:镜像的标签,相当于版本号
  • docker client:客户端通过命令与守护进程交互,类似于 mysql 客户端
  • docker daemon:docker 的守护进程,接收并执行客户端发送来的指令,类似于mysql服务端
  • docker host:运行 docker 守护进程和容器的宿主机器(物理机/虚拟机)
  • docker-io:就是docker,ubuntu在维护(不是非常清楚)
  • docker-engine:就是docker,docker deamon + REST API + docker CLI
  • docker-ce:社区版本,免费,在docker17及以上开始普及docker-ce和docker-ee
  • docker-ee:企业版本,收费,docker准备收割的利器
  • docker-machine:创建docker host的工具,可以在一台物理机上模拟多个docker环境
  • docker swarm:docker的集群管理工具,(1.12及以上版本内置了swarm)
  • docker compose:单机版的docker服务编排工具,使用compose file v1/v2面向容器编排设计
  • docker stack:docker stack deploy,跨宿主机的服务编排,使用compose file V3版本。(1.13及以上版本内置了stack)
  • AFUS:docker的分层文件系统,上层依赖底层。Docker镜像是由多个文件系统(只读层)叠加而成
  • docker volume:由于容器中存储数据容易丢失,所以将持久化的数据以映射的形式,将宿主机的目录挂载到容器的目录上。类似于服务器的共享存储。

版本说明

  • 低版本的docker没有swarm功能,必须在1.12版本及以上
  • 1.13版本以上docker自带stack
  • 1.12发布于2016.6,适合centos-7-1511
  • 1.13发布于2017.1,适合centos-7-1611

容器和虚拟机的区别

虚拟机(Virtual Machine):
虚拟硬件设备作为基础设施,每个虚拟机拥有独享的内核,能运行完整的操作系统,操作系统级别的隔离。

容器LXC(Linux Container):
轻量级的虚拟化,生成独立的运行环境,和主机共享内核,应用程序级别的隔离。

参考资料

  • docker 镜像搜索:https://hub.docker.com/
  • docker 文档查看:https://docs.docker.com/
  • docker 官方介绍:https://docs.docker.com/engine/docker-overview/
  • docker 架构详解:http://www.infoq.com/cn/articles/docker-source-code-analysis-part1/
  • docker 特性列举:http://www.lupaworld.com/article-243555-1.html
  • docker 是什么:https://segmentfault.com/a/1190000002609286

你可能感兴趣的:(C.1 docker overview)