APP下载
报价宝  ›  科技  › 

什么是Docker?Docker有哪些应用场景?Docker技术架构

报价宝 来源:baojiabao.com 发布时间:2019-07-23 01:48:00 10月04日更新
报价宝综合消息什么是Docker?Docker有哪些应用场景?Docker技术架构

什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的映象中,然后释出到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何界面。

一个完整的Docker有以下几个部分组成:

1.DockerClient客户端

2.Docker Daemon守护程序

3.Docker Image映象

4.DockerContainer容器

Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远端API来管理和建立Docker容器。Docker 容器通过 Docker 映象来建立。容器与映象的关系类似于面向物件程式设计中的物件与类。

Docker面向物件

容器物件

映象类

Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(建立、执行、分发容器)。 客户端和服务端既可以执行在一个机器上,也可通过 socket 或者RESTful API 来进行通讯。

Docker daemon 一般在宿主主机后台执行,等待接收来自客户端的讯息。 Docker 客户端则为使用者提供一系列可执行命令,使用者用这些命令实现跟 Docker daemon 互动。

Docker 特性

在docker的网站上提到了docker的典型场景:

1.Automating the packaging and deployment of applications(使应用的打包与部署自动化)

2.Creation of lightweight, private PAAS environments(建立轻量、私密的PAAS环境)

3.Automated testing and continuous integration/deployment(实现自动化测试和持续的整合/部署)

4.Deploying and scaling web apps, databases and backend services(部署与扩充套件webapp、数据库和后台服务)

由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的执行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续整合环境,以及一切可以横向扩充套件的应用(尤其是需要快速启停来应对峰谷的web应用)。

1.构建标准化的执行环境,现有的方案大多是在一个baseOS上执行一套puppet/chef,或者一个image档案,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的档案格式在执行时rootfs是read only的)。并且后者档案体积大,环境管理和版本控制本身也是一个问题。

2.PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础

3.因为其标准化构建方法(buildfile)和良好的REST API,自动化测试和持续整合/部署能够很好的整合进来

4.因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源

Docker 局限

Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:

1.Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用

2.LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的

3.隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的执行库

4.网络管理相对简单,主要是基于namespace隔离

5.cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)

6.Docker对disk的管理比较有限

7.container随着使用者程序的停止而销毁,container中的log等使用者资料不便收集

Docker 原理

Docker核心解决的问题是利用LXC来实现类似VM的功能,从而利用更加节省的硬件资源提供给使用者更多的计算资源。同VM的方式不同, LXC 其并不是一套硬件虚拟化方法 - 无法归属到全虚拟化、部分虚拟化和半虚拟化中的任意一个,而是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观。所以我们从虚拟化到docker要解决的问题出发,看看他是怎么满足使用者虚拟化需求的。

使用者需要考虑虚拟化方法,尤其是硬件虚拟化方法,需要借助其解决的主要是以下4个问题:

1.隔离性 - 每个使用者例项之间相互隔离, 互不影响。 硬件虚拟化方法给出的方法是VM, LXC给出的方法是container,更细一点是kernel namespace

2.可配额/可度量 - 每个使用者例项可以按需提供其计算资源,所使用的资源可以被计量。硬件虚拟化方法因为虚拟了CPU, memory可以方便实现, LXC则主要是利用cgroups来控制资源

3.移动性 - 使用者的例项可以很方便地复制、移动和重建。硬件虚拟化方法提供snapshot和image来实现,docker(主要)利用AUFS实现

4.安全性 - 这个话题比较大,这里强调是host主机的角度尽量保护container。硬件虚拟化的方法因为虚拟化的水平比较高,使用者程序都是在KVM等虚拟机器容器中翻译执行的, 然而对于LXC, 使用者的程序是lxc-start程序的子程序, 只是在Kernel的namespace中隔离的, 因此需要一些kernel的patch来保证使用者的执行环境不会受到来自host主机的恶意入侵, dotcloud(主要是)利用kernel grsec patch解决的.

视讯学习

第一章-基于Docker部署微服务专案

第一节-基于Docker部署微服务专案

第二节-Docker与虚拟机器区别

第三节-Docker架构的原理

第四节-Docker环境安装01

第五节-Docker环境安装02

第六节-配置Docker阿里映象加速

第七节-使用Docker下载映象档案

第八节-使用Docker安装Nginx服务器

第九节-基于Docker部署微服务专案

第二章-使用Docker安装应用软件

第一节-Docker的架构原理回顾

第二节-Docker解除安装映象和容器

第三节-使用Docker安装Nginx并且进入容器

第四节-使用Docker安装Nginx配置负载均衡策略

第五节-使用Docker安装MySQL数据库

如果有需要Docker技术资料,可以私信哦~

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 手机价格 笔记本价格 小米手机价格 降噪耳机价格