docker简介

一、docker发展史

2008 年,Solomon Hykes 为了建立一个与编程语言无关的平台即服务(Platform-as-aService,PaaS)产品,创立了 dotCloud 公司。
Docker 早期的版本只是在简单封装 LXC( Linux 容器技术) 以及联合文件系统(WPKoPfifileU[UVeO)之上多加了点东西,但往后无论是发展还是被接受的速度都快得惊人。
Docker 1.0 于 2014 年 6 月发布。Docker 1.0 代表着稳定性与可靠性的飞跃——它声称已经“生产就绪”,虽然在这之前就已经有一些公司(如 Spotify 和百度)正式投入使用。同时,Docker 推出了一个名为 Docker Hub 的公共容器仓库,这标志着 Docker 从一个单纯的容器引擎开始转变为一个完整的平台。
2014 年 12 月举行的 DockerConEU 上, Docker Swarm 与 Docker Machine 同 时 面 世。Docker Swarm 是一个 Docker 集群管理工具,而 Docker Machine 是个部署 Docker 主机的命令行工具。这表明 Docker 的意图不仅仅是提供 Docker 引擎,而是提供一个完整且综合的容器运行方案。
OCI :【The Open Container Initiative】开放容器计划,是一个旨在对容器基础架构中的基础组件(如镜像格式与容器运行时)进行标准化的管理委员会。
Moby projetc:Docker开源项目,Moby 项目的目标是基于开源的方式,发展成为 Docker 上游,并将 Docker 拆分为更多的模块化组件。
Docker 1.8 版本引入了“内容信任”(content trust)特性,能够核实 Docker 镜像的完整性和发布者身份。对于建立基于 Docker 仓库镜像的可信工作流程,“内容信任”是个很重要的构成部分。

二、主流的云计算分类

在这里插入图片描述

图中蓝色代表需要用户自己运行管理的部分,从下到上依次为:组网、部署存储、选择硬件、虚拟化、部署操作系统、部署数据库、部署安全组件、部署运行环境、部署应用程序。
IAAS:基础设施即服务。如百度云和阿里云,我们购买过来的是一个操作系统。
PAAS:平台即服务,购买完成后将软件放入分享目录中就可以运行。
SAAS:软件即服务,使用基于web的软件。

三、容器与虚拟机区别

首先,Docker是开源的应用容器引擎,起初基于Linux容器技术,容器可以看做是一个轻量化级别的虚拟机。

虚拟机:通过软件模拟具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。 每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。虚拟机一旦被开启,预分配给它的资源将全部被占用。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。

容器:容器是轻量级的操作系统级虚拟化,容器与宿主机共享硬件资源及操作系统,可以实现资源的动态分配。容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。容器技术是实现操作系统虚拟化的一种途径,可以让资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。通过下面这幅图我们可以很直观的反映出这两者的区别所在。
在这里插入图片描述

左图是虚拟机,从下到上理解:
Infrastructure:基础设施,可以是个人电脑,数据中心的服务器,或者是云主机。
Host Operating System:主机操作系统
Hypervisor:虚拟机管理系统。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。Hypervisor分为类型1和类型2,其中类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V、Xen以及KVM。类型2的Hypervisor有VirtualBox和VMWare workstation。
Guest OS:客户机操作系统。假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个客户机操作系统,也就是3个虚拟机。这些虚拟机都非常大,它们将占用真实主机大量磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
Bins/Libs:各种依赖的二进制文件和库。每一个客户机操作系统都需要安装许多依赖。
App:应用软件。安装依赖之后,就可以在各个客户机操作系统分别运行应用了,这样各个应用就是相互隔离的。

右图是容器,从下到上理解:
Infrastructure:基础设施,可以是个人电脑,数据中心的服务器,或者是云主机。
Operating System:主机操作系统
Hypervisor:虚拟机管理系统。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。Hypervisor分为类型1和类型2,其中类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V、Xen以及KVM。类型2的Hypervisor有VirtualBox和VMWare workstation。
Docker Engine:容器引擎,用来运行和管理容器的核心软件。负责容器的创建、运行和监控,还负责镜像的构建和储存 ,容器和镜像都在图的右边。Docker 守护进程通过 docker daemon 命令启动,一般会交由主机的操作系统负责执行。docker engine包括如下三个部分:
Docker Daemon — docker 的守护进程,属于C/S中的server
Docker REST API — docker daemon向外暴露的REST 接口
Docker CLI — docker向外暴露的命令行接口(Command Line API)
Bins/Libs:各种依赖的二进制文件和库。每一个客户机操作系统都需要安装许多依赖。
App:应用软件。安装依赖之后,就可以在各个客户机操作系统分别运行应用了,这样各个应用就是相互隔离的。
在这里插入图片描述

传统虚拟化和docker虚拟化比较:
运行同样数量的app,docker与宿主操作系统共享内核,是内核级虚拟化,意味着更低的资源消耗,更快的启动速度,docker的启动时间等同于容器进程的启动时间。
传统虚拟化app间通过内核隔离,相较于docker虚拟化更加安全。

四、Docker

Docker的优点:
更高效的资源利用,内核级的虚拟化。
更快速的交付和部署
更轻松的迁移和拓展
更简单的更新管理

Docker 三个基本概念:
镜像【Image】:镜像就是一个只读的模板。镜像可以用来创建Docker容器。另外Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接下载一个已经做好的镜像来直接使用。

容器【Container】:容器是从镜像创建的运行实例,它可以被启动、开始、停止、 删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
在这里插入图片描述

一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。

镜像就像停止运行的容器。实际上,我们可以停止某个容器的运行,并从中创建新的镜像。在该前提下,镜像可以理解为一种构建时(build-time)结构,而容器可以理解为一种运行时(run-time)结构:
在这里插入图片描述

仓库【Repository】:仓库是集中存放镜像文件的场所。与仓库注册服务器【Registry】不一样。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签【tag】。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
仓库分为公开仓库【Public】和私有仓库【Private】两种形式。
在这里插入图片描述

Docker架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 客户端与 Docker 服务器进行交互,Docker服务端负责构建、运行和分发 Docker 镜像。 Docker 客户端和服务端可以运行在一台机器上,也可以通过RESTful,stock 或网络接口与远程 Docker 服务端进行通信。
在这里插入图片描述

Docker的架构结构:
Client客户端:向docker服务器进程发起请求,如:创建、停止、销毁容器等操作
Docker Client:Docker客户端,运行docker系列命令的命令行。
Docker Machine:是一个用于配置和管理你的宿主机(上面具有 Docker Engine 的主机)的工具。通常,你在你的本地系统上安装 Docker Machine。Docker Machine有自己的命令行客户端 docker-machine 和 Docker Engine 客户端 docker。你可以使用 Machine 在一个或多个虚拟系统上安装 Docker Engine。
HOST主机:一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
local host:本地主机
remote host:远程主机
Docker daemon:Docker 守护进程
container:容器
image:镜像,已从加载在本地的镜像
Registry仓库注册服务器:用于管理镜像仓库,起到的是服务器的作用
Docker hub:Docker公司提供的仓库注册服务器
private registry:私有注册服务器,Docker 官方提供了 Docker Registry 镜像,可以直接使用镜像创建私有 Registry 服务
repository:仓库
image:镜像,仓库中存储的镜像
容器、镜像在客户端,主机,和仓库间的流转过程:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值