自己买了个服务器,前不久搭建好的一个网站,想要再搞一个站点,无奈只能修改端口后,再部署另外一个站点。繁琐的配置运行环境,迁移网站,是否让你感觉到很繁琐?服务器不想用了,想搬迁到另外一台服务器去部署,先是拷贝原有数据,在新的服务器上又开始搭建环境进行部署,这些费时间的事情现在只需要几分钟就能完成,那就是docker技术。

docker通俗按照自己的理解来说,就是类似VM虚拟机一样的虚拟技术。但是它比虚拟机更加强大,体积小,运行速度快,启动和关闭只需要几秒。相对于普通虚拟机来说,启动时间在分钟级别,占用内存大。所以这就是docker出现之后的优势。docker容器可以打包为镜像文件(类似VM虚拟机的那些快照文件),迁移的时候我们只需要在新服务器上安装docker,就能把之前打包好的镜像文件导入到docker里面,运行容器,就能实现访问,不需要重新配置环境。下面一张图展示普通虚拟机和docker的区别。

  VM虚拟机:

        docker架构图:

我们进行对比一下,docker其实就是和虚拟机的目的差不多,都是虚拟化技术。但是docker比虚拟机更加轻量级,更快,更加易于移植。

    镜像:  创建虚拟机和docker 都必不可少的东西。  用过虚拟机的朋友都知道,创建一个虚拟机就先得下载操作系统的ISO镜像文件,然后通过镜像文件安装操作系统,和实体机类似,然后能在虚拟机中去安装各种软件。

  容器:  通俗拿VM虚拟机和docker来举例,一个容器就类似于一个虚拟机,只不过在docker技术的术语上称为容器。这个容器装的就是我们部署的应用在运行,和虚拟机一样可以开机,关机,重启。docker称为容器的运行,关闭,重启。而且这个容器可以打包为镜像文件,类似虚拟机快照的文件,放在其它虚拟机上又可以保持原样能运行,docker也是如此,把容器打包为镜像文件,然后在新的服务器安装好的docker环境下导入进去,保持原来的状态能够运行。

透过现象看本质:

1、docker容器实际上就是运行的一个进程,只不过由于docker帮助我们包装了这个进程,给这个进程加以一个可运行的微linux环境而已,让我们感觉看起来"像"虚拟机而已。所以也就不奇怪,为什么容器的启动是秒级的,启动一个虚拟机是分钟级别的。

2.  举个简单例子。一个房子比较大,假如租户一起住,大家一起住难免有束缚感,也不太方便。那么房东把房子改造一下,房子用可拆装的墙板隔离开来,分为许多的小房间,每个人住在自己的小房间。小房间麻雀虽小,五张俱全,你可以自己布置自己的房间。每个租客在自己的"小房间"里面可以做自己的事情,从而也不会打扰到其他人。但是他们都是共享这个房子的水费,电费,网费等公共资源(每个docker容器(也就是进程)依赖的是宿主机的资源)。  聪明的你会想到, 可拆装的墙板隔音效果或安全性不够(docker容器之间的隔离性比真实虚拟机要稍微弱), 会不会有坏人打个洞偷窥?  会不会有人监听我在房间的一举一动?  可拆装的墙板肯定是不比水泥墙(虚拟机隔离性)牢固.虽说隔离性没有虚拟机那么强,但是目前为止docker还没暴露出关于这方面的问题,广泛的社区以及大厂Google等公司都在使用,所以我们还是可以放心大胆使用的。   假如有一天房东要把房子卖了,只要把可拆装的墙板移除,打扫一下,回到原样,不破坏房子原样,就可以出售房子了(在容器中安装的软件,程序等都不会污染到宿主机的环境,容器被删除也就被删除了)。

原文地理:https://blog.csdn.net/xyz_dream/article/details/53081687

docker的通俗理解的更多相关文章

  1. 通俗理解Android事件分发与消费机制

    深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...

  2. Effective Java通俗理解(持续更新)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  3. Effective Java通俗理解(下)

    Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...

  4. 关于MySQL中的自联结的通俗理解

    关于MySQL中的自联结的通俗理解 前言:最近在通过SQL必知必会这本书学习MySQL的基本使用,在学习中也或多或少遇到了点问题,我也正好分享给大家,我的这篇博客用到的所有表格的代码都是来自SQL必知 ...

  5. 【Docker江湖】之docker部署与理解

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  6. Effective Java通俗理解(上)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  7. OSI七层模式简单通俗理解

    OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OS ...

  8. 通俗理解决策树中的熵&条件熵&信息增益

    参考通俗理解决策树算法中的信息增益 说到决策树就要知道如下概念: 熵:表示一个随机变量的复杂性或者不确定性. 假如双十一我要剁手买一件衣服,但是我一直犹豫着要不要买,我决定买这件事的不确定性(熵)为2 ...

  9. CNN笔记:通俗理解卷积神经网络【转】

    本文转载自:https://blog.csdn.net/v_july_v/article/details/51812459 通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012 ...

随机推荐

  1. pysql用类进行封装

    pyMySQL用类进行封装 class SqlHelper(object): def __init__(self): self.connect() def connect(self): self.co ...

  2. java基础—注解annotation

    一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts ...

  3. Silverlight日记:字符串装换成Path对象

    一,需要动态绑定Path <UserControl x:Class="Secom.Emx2.SL.Common.Controls.EleSafe.Ele.Line" xmln ...

  4. JQuery EasyUI学习记录(三)

    1.jQuery EasyUI messager使用方式 1.1 alert方法 $(function(){ //1.alert方法---提示框 $.messager.alert("标题&q ...

  5. SSH框架使用poi插件实现Excel的导入导出功能

    采用POI生成excel结构 直接贴出代码  excel表格导出功能 action代码: struts.xml配置: 前台jsp代码:

  6. oracle系統表、數據字典介紹與日常問題診斷

    oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...

  7. linux配置邮件客户端

    linux配置邮件客户端 1. 申请一个163邮箱,并配置客户端授权密码 l 开启POP3/SMTP/IMAP l 设置客户端授权密码 ###此密码不能跟邮箱密码相同,此密码用来在linux邮件客户端 ...

  8. Java中的==和equals的区别详解

    1.基础知识 (1)String x = "hello"; (2)String x = new String ("hello"); 第1种方式的工作机制是,首先 ...

  9. matplotlib绘图(一)

    绘制这折现图 导入响应的包 import numpy as npimport pandas as pdfrom pandas import Series,DataFrame%matplotlib in ...

  10. JDBC-防止SQL注入问题

      String sql = "select * from user where name = '" + name + "' and password = '" ...