一、docker是什么

1、docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,docker是用go语言编写的。
2、一个完整的docker有以下几个部分组成。

1. Docker Client客户端
 2. Docker Daemon 守护进程
 3. Docker Image镜像
 4. Docker Container 容器

3、Docker的思想来源于集装箱,在一艘大船上,可以把货物规整的摆放起来,并且各种各样的货物被集装箱标准化了,集装箱与集装箱之间不会相互影响,那么我们就不需要专门运送水果的船和专门运送化学品的船了,只要这些货物在集装箱内封装好,那么我们就可以用一艘大船把他们都运走,docker就是类似的理念,现在的云计算就像当与大货轮,docker就是集装箱。
4、Docker是基于Go语言实现的云开源项目。
Docker的主要目标是"Build Ship and Run Any App.Anywhere",也就是通过对应组件的封装,分发,部署运行等生命周期的管理,使用户的APP及其运行环境能够做到一次封装,到处运行。
Linux容器技术的出现就解决了这样的一个问题,而Docker就是在它的基础上发展过来的。将应用运行在Docker容器上,而Docker二、docker架构容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

二、docker架构

docker是主流云原生项目 docker是基于什么做引擎的_应用程序


1、client端是在命令行中实现的,命令操作的终端。

2、Docker采用C/S架构,Docker daemon作为服务端接受来自客户的请求,并处理这些请求,(创建,运行,分发容器)

3、客户端和服务端既可以运行在一个机器上,也可以通过socket或者RESTful API来进行通信。

Docker daemon一般在宿主机后台运行,等待接受来自客户端的消息。

Docker客户端则为用户提供一系列可执行命令,用户用这些命令实现跟Docker daemon交互。

三、docker三要素(镜像、容器、仓库)

镜像是模板,容器是镜像的实例
1、镜像
Docker镜像(image)就是一个只读的模板,镜像可以用来创建Docker容器,一个镜像可以创建多个容器。
2、容器
Docker利用容器独立运行的一个或者一组应用。容器是用镜像创建的运行实例。
它可以被启动,开始,停止,删除,每个容器都是相互隔离的,保证安全的平台。可以把容器看成一个简易版的Linux环境,(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那层是可读可写的。
3、仓库
仓库是集中存放镜像文件的场所。
镜像构建完成后,可以很容易的在当前宿主上运行,可是如果需要在其他服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。一个Docker Registry中可以包含多个仓库,每个仓库可以包含多个标签,每个标签对应一个镜像。

四、docker和虚拟机的对比

1、我们用的传统虚拟机如VMware,VisualBox之类的需要整合模拟整台机器包括硬件,每台虚拟机都需要有自己的操作系统。
虚拟机一旦被开启,与分配给它的资源将全部被占用。
2、容器技术是我们的宿主机共享硬件资源以及操作系统,可以实现资源的动态分配。
容器可以包含应用和其所有的依赖包,但是与其他容器共享内核。
容器在宿主机操作系统中,在用户空间以分离的进程运行。
3、容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。通过使用容器,哦们可以轻松打包应用程序的代码,配置和依赖关系。将其变成容易使用的构建块,从而实现环境一致性,运行效率、开发人员生产力和板块控制等诸多目标,容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。

docker是主流云原生项目 docker是基于什么做引擎的_Docker_02