docker的通俗理解
自己买了个服务器,前不久搭建好的一个网站,想要再搞一个站点,无奈只能修改端口后,再部署另外一个站点。繁琐的配置运行环境,迁移网站,是否让你感觉到很繁琐?服务器不想用了,想搬迁到另外一台服务器去部署,先是拷贝原有数据,在新的服务器上又开始搭建环境进行部署,这些费时间的事情现在只需要几分钟就能完成,那就是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的通俗理解的更多相关文章
- 通俗理解Android事件分发与消费机制
深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...
- Effective Java通俗理解(持续更新)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- Effective Java通俗理解(下)
Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...
- 关于MySQL中的自联结的通俗理解
关于MySQL中的自联结的通俗理解 前言:最近在通过SQL必知必会这本书学习MySQL的基本使用,在学习中也或多或少遇到了点问题,我也正好分享给大家,我的这篇博客用到的所有表格的代码都是来自SQL必知 ...
- 【Docker江湖】之docker部署与理解
转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...
- Effective Java通俗理解(上)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- OSI七层模式简单通俗理解
OSI七层模式简单通俗理解 这个模型学了好多次,总是记不住.今天又看了一遍,发现用历史推演的角度去看问题会更有逻辑,更好记.本文不一定严谨,可能有错漏,主要是抛砖引玉,帮助记性不好的人.总体来说,OS ...
- 通俗理解决策树中的熵&条件熵&信息增益
参考通俗理解决策树算法中的信息增益 说到决策树就要知道如下概念: 熵:表示一个随机变量的复杂性或者不确定性. 假如双十一我要剁手买一件衣服,但是我一直犹豫着要不要买,我决定买这件事的不确定性(熵)为2 ...
- CNN笔记:通俗理解卷积神经网络【转】
本文转载自:https://blog.csdn.net/v_july_v/article/details/51812459 通俗理解卷积神经网络(cs231n与5月dl班课程笔记) 1 前言 2012 ...
随机推荐
- docker-企业级镜像仓库harbor
Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色 ...
- MFC:DISP_FUNCTION 参数
/*#include <afxdisp.h>DISP_FUNCTION( theClass, pszName, pfnMember, vtRetVal, vtsParams )参数:the ...
- Silverlight日记:动态操作Grid
一,动态生成Grid public static Grid CreateGrid(List<T_METER> List) { var g = new Grid(); if (null == ...
- Bootstrap 提示工具(Tooltip)插件方法的用法
方法 下面是一些提示工具(Tooltip)插件中有用的方法: 方法 描述 实例 Options: .tooltip(options) 向元素集合附加提示工具句柄. $().tooltip(option ...
- Python——函数基础
函数是什么 它相当于一个独立的代码块,可以被重复使用,如果需要增加一个功能或者修改一个功能,只需要,增加或者修改函数即可. 函数分类 内置函数 python解释器已经为我们定义好的参数,比如:len( ...
- 解决安装homebrew失败
安装homebrew失败提示如下 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/maste ...
- 【线段树 泰勒展开】Codechef April Challenge 2018 Chef at the Food Fair
第一次写泰勒展开:本地和CC差距好大 题目大意 大厨住的城市里办了一场美食节.一条街上开设了$N$个摊位,编号为$1∼N$.这天开始时,第$i$个摊位的食物会导致食物中毒的概率是$P_i$.在这一天中 ...
- 转 WebService两种发布协议--SOAP和REST的区别
转发文章 https://blog.csdn.net/zl834205311/article/details/62231545?ABstrategy=codes_snippets_optimize_v ...
- 使用MySQL yum源安装MySQL
#首先,将MySQL Yum存储库添加到系统的存储库列表中. #在https://dev.mysql.com/downloads/repo/yum/地址中,下载mysql yum repository ...
- Python入门学习笔记2:刷题
1) LeetCode 强的面试题和算法题,要求也比较高,很多国内外的码农在上面刷题.难度从easy到hard都有,而且覆盖面极广,需要你的综合实力去答题. 最简单的题比如字符串的处理有的时候也要用到 ...