Docker

Docker简介

业务流程

整个这章内容,就解决一个问题:Docker是什么?
要了解什么是Docer就要先了解什么容器,
要了解什么是容器就要先说一下应用的部署环境。

业务是基于应用( Application)运转的。我们学习编程技术,最终目的就是为了开发各种各样的应用。
大部分应用是运行在服务器之上的。
以前,每个服务器只能运行一个应用。
Windows 和Linux操作系统都没有相应的技术手段来保证在一台服务器上稳定而安全地同时运行多个应用。

在这样的时代,经常会出现这样一幕:
每次业务部门想要地加一个新的应用时, IT部门就需要去采购一个新的服务器。
大部分情况下,没有人知道新增应用所需的服务器性能究竟是怎样的,
这意味着IT部门需要凭借经验去猜测所购买的服务器型号和规格,因此,
IT部门在采购的时候就不得不买那些性能大幅优于业务需求的服务器。
毕竟无论是IT部门还是业务部门,都不想看到服务器性能不足的情况出现。
因为服务器性能不足,可能会导致某些交易失败,而交易失败会使得公司客户流失、收益下降,
所以IT部门通常采购的都是更大、更好的服务器。
这种做法导致了大部分服务器长期运行在他们额定负载5%~ 10%的水平区间之内。
这对公司资产和资源都是一种极大的浪费!

为了解决上面的问题,VMware 公司给全世界带来了一个礼物:虚拟机(VM)。
然后几乎是一夜之间,世界就变得美好了!
人们终于拥有了一种允许多应用能够稳定、安全地同时运行在一个服务器中的技术。

虚刑机是一种具有划时代意义的技术!
每当业务部门需要增加应用的时候,IT部门无须采购新的服务器。
取而代之的是,IT部门会尝试在现有的,并且有空闲性能的服务器上部署新的应用。
突然之间,人们发现这种技术能够让现有的资产(如服务器)拥有更大的价值,从而最终为公司节省大量内资金支出。

但…VM技术,在多应用部署这个角度来看,不是十全十美的!
实际上,虚拟机最大的缺点就是依赖其专用的操作系统(OS)。
OS会占用额外的CPU、RAM和存储,这些资源本可以用于运行更多的应用。
另外,OS本身不是免费的,安装在OS上的应用,进行迁移难度和成本都很高。

容器解决虚拟机的资源浪费的情况
长期以来,像谷歌这样的大规模Web服务玩家一直采用容器(Container)技术解决虚拟机模型的缺点。
容器模型其实跟虚拟机模型相似,其主要的区别左于,容器的运行不会独占操作系统。
实际上,运行在相同宿主机上的容器是共享一个操作系统的,这样就能够节省大量的系统资源,如CPU、RAM以及存储。
将容器从笔记本电脑迁移到云上,之后再迁移到数据中心的虚拟机或者物理机上,都是很简单的事情。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-
在这里插入图片描述

什么是Docker?

首先笼统地说,Docker就是我们上面说的容器模型中的一种具体的实现产品,是一个运行在Windows或Linux上的软件。
总体来说,在平时我们口头交流上,说的Docker可能是下面的几种情况:
1、Docker公司。
2、Docker引擎。
3、Docker开源项目( Moby )。

Docker 公司
Docker公司位于旧金山,由法裔美籍开发者和企业家Solomon Hykes创立,其标志如图:

在这里插入图片描述

“Docker”一词来自英国口语,意为码头工人(Dock Worker),即从船上装卸货物的人。

Docker引擎

多数技术人员在谈到Docker时,主要是指Docker引擎。
Docker引擎是用于运行和编排容器的基础设施工具。
Docker引擎是是容器最核心的东西,其他Docker公司或第三方的产品都是围绕Docker引擎进行开发和集成的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VLoLeRmg-1684621555059)(1683795210461.png)]

Docker引擎位于中心,其他产品基于Docker引擎的核心功能进行集成。
Docker引擎可以从Docker网站下载,也可以基于GitHub上的源码进行构建。
无论是开源免费的社区版本还是收费商业版本,都有Linux和Windows版本。

Docker 引擎主要有两个版本:企业版(EE)和社区版(CE)。
每个季度,企业版和社区版都会发布一个稳定版本。
社区版本会提供4个月的支持,而企业版本会提供12个月的支持。

2017 年第一季度以前,Docker 版本号遵循大版本号.小版本号的格式。采用新格式前的最后一个版本是Docker 1.13
从2017年第一季度开始,Docker 版本号遵循YY.MM-xx格式,例如,2018 年6月第一次发布的社区版本为18.06.0-CE。

Docker 开源项目( Moby )
“Docker”一词也会用于指代开源Docker项目。
其中包含一系列可以从Docker官网下载和安装的工具,比如Docker服务端和Docker客户端。
不过,该项目在2017年正式命名为Moby项目。
由于这次改名,GitHub上的docker/docker库也被转移到了moby/moby,并且拥有了项目自己的Logo,如图:

在这里插入图片描述

Moby项目的目标是基于开源的方式,发展成为Docker上游,并将Docker拆分为更多的模块化组件。
核心的Docker引擎项目位于GitHub的moby/moby,但是引擎中的代码正持续被拆分和模块化。

Moby项目已经给软件产业带来了翻天覆地的变化。Docker 已经得到了广泛的应用!

进一步理解Docker里的三大核心概念:镜像、容器和仓库
1、镜像
Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。
可以把它称为一个Apache镜像。镜像是创建Docker容器的基础。
通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,
用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。

2、容器
简单地说,可以把容器看装镜像的盒子。
容器还可以运行里边的镜像里的应用。
它可以启动、开始、停止、删除,而这些容器彼此之间相互隔离、互不可见的。
所以,一句话:Docker就是利用容器来运行和隔离应用程序的。

3、仓库
Docker仓库类似于代码仓库,是Docker集中存放镜像文件的场所。
有时候我们会将Docker仓库和仓库注册服务器(Registry,也可以叫镜像仓库服务器)混为一谈,并不严格区分。
实际上,镜像仓库服务器是存放仓库的地方,其上往往存放着多个仓库。
每个仓库集中存放某一类镜像,往往包括多个镜像文件,通过不同的标签( tag)来进行区分。
例如存放Centos操作系统镜像的仓库,被称为Centos仓库,其中可能包括6、7、8 等不同版本的镜像。
在这里插入图片描述

​ 根据所存储的镜像公开分享与否,Docker 仓库可以分为公开仓库(Public) 和私有仓库(Private) 两种形式。目前,最大的公开仓库是官方提供的Docker Hub,其中存放着数量庞大的镜像供用户下载。
国内不少云服务提供商(如腾讯云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问。

​ 当然,用户如果不希望公开分享自己的镜像文件,Docker 也支持用户在本地网络内创建一个只能自己访问的私有仓库。
​ 当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者私有仓库。
这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上pull下来就可以了。

一、核心技术

​ 最早期版本的Docker基于已经相对成熟的Linux Container (LXC)技术快速实现。

自0.9版本起,Docker 逐渐摆脱传统LXC的限制,转移到全新设计的libcontainer之上,

后来更是以此为基础推出了开放容器运行时支持runc项目(https://github.com/opencontainers/runc

​ 2015年6月,Docker公司将runc捐赠出来,牵头成立了Linux 基金会支持的Open Containers Initiative (OCI),

专注于容器技术的运行时规范(runtime-spec) 和镜像规范(image-spec), 试图打造更通用、更开放的容器技术规范标准体系。

当然,Docker容器运行在操作系统上,需要来自操作系统的支持。

以容器领域最流行的Linux宿主系统为例,介绍Docker底层依赖的核心技术:

l Docker基本架构

l Linux操作系统的命名空间( namespace)

l 控制组( control group)

l 联合文件系统( union filesystem)

l 网络虚拟化支持等。

1、Docker基本架构

Docker目前采用了标准的C/S架构,包括客户端、服务端两大核心组件,同时通过镜像仓库来存储镜像。

客户端和服务端既可以运行在一个机器上,也可通过socket或者RESTful API来进行通信,如图所示:

在这里插入图片描述

1)服务端

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_33406021

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值