1.docker简介

1.dockers简介

网址: https://docs.docker.com

1、什么是Docker.
Docker最初是dotCloud公司创始人Solomon Hykes在法国期间发起的一个公司内部项目,它是基于dotCloud公司多年云服务技术的一次革新,并于2013年3月以Apache2.0授权协议开源,主要项目代码在GitHub上进行维护。Docker项目后来还加入了Unux基金会,并成立推动开放容器联盟(OC)

Docker使用Google公司推出的Go语言进行开发实现,基于UnuX内核的cgroup,namespace,以及OverlayFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器

最初实现是基于XC,从0.7版本以后开始去除XC,转而使用自行开发的libcontainer,从1.11开始,则进一步演进为使用runC和containerd。Docker在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得Docker技术比虚拟机技术更为轻便、快捷。

2、为什么要用Docker.
docker的优势
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行

Liux容器技术的出现就解决了这样一个问题,而Docker就是在它的基础上发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

一句话:解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。


特性 容器 虚拟机 物理机
启动速度 秒级 分钟级 小时级
硬盘启动 一般为MB 一般GB 一般GB,TB
性能 接近原生 弱于 原生
系统支持量 单机支持上千个容器 一般几十个 单个
隔离性 安全隔离 安全隔离 安全隔离

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。
比较了Docker和传统虚拟化方式的不同之处:
  *传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程:
  *容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
  *每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

2. docker的核心概念

Docker包括三个基本概念
1)镜像(image)
2)容器(Container)
3}仓库(Repository)
理解了这三个概念,就理解了Docker的整个生命周期

1、镜像(Image)
Docker镜像类似于一个虚拟机镜像(x.iso),可以将它理解为一个只读的模板
例如:一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件).可以把它称为Apache镜像

镜像是创建Docker容器的基础
通过版本管理和增量的文件系统,Docker提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用它

2、容器(Container)
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用
容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离、互不可见的
可以把容器看作一个简易版的Uux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子

注意:镜像自身是只读的,容器从镜像启动的时候,会在镜像的最上层创建一个可写层

3、仓库(Repository)
Docker hub仓库类似于代码仓库,是Docker集中存放镜像文件的场所。根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式
目前,最大的公开仓库是官方提供的Docker Hub,其中存放若数量庞大的镜像供用户下载,国内不少云服务提供商(如腾讯云、阿里云等)也提供了仓库的本地源,可以提供稳定的国内访问
当然,用户如果不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库
当用户创建了自己的镜像之后就可以使用puh命令将它上传到指定的公有或者私有仓库。这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上Pu下来就可以了

4.docker运行原理

docker的运行过程: 
1用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
2 Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client的请求。
3 Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式的存在。
4Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储。
5当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境。
6当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver:来完成。
7 Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。
posted @ 2022-05-15 16:34  cuteAIR  阅读(64)  评论(0编辑  收藏  举报