已经多年不写博客, 看完《晓松奇谈》最后一期猛然觉醒, 决定仔细梳理下自己这几年的知识脉络。

既然决定写, 那么首先就从最近2年热门的开源项目Docker开始。Docker 这两年在国内很是火爆, 国内也有很多Docker的创业公司在做docker平台相关的事情。

比如已经拿到风投的Daocloud. 同时Docker也获得了很多大公司的青睐e.g. Google、Microsoft.

既然docker那么火热, 那么docker是什么呢? 我们一起看看Docker官网对docker的介绍

Docker provides a way to run applications securely isolated in a container, packaged with all its dependencies and libraries.
Because your application can always be run with the environment it expects right in the build image, testing and deployment is simpler than ever,
as your build will be fully portable and ready to run as designed in any environment.
And because containers are lightweight and run without the extra load of a hypervisor,
you can run many applications that all rely on different libraries and environments on a single kernel, each one never interfering with the other.
This allows you to get more out of your hardware by shifting the “unit of scale” for your application from a virtual or physical machine, to a container instance.

简而言之, Docker是一种轻量级的容器,通过Docker Image你可以统一客户环境和开发环境, 从而避免开发人员经常遇到的环境不一致导致的问题, 简化了测试以及部署。

同时容器使用的是宿主机的操作系统, 容器通过对“用户空间”的抽象化处理提供操作系统层级的虚拟化机制, 这也就意味着你可以单机运行大量的容器水平扩展容器。

Docker 容器和传统的VM有什么区别呢?

虚拟机比容器多了个一个Hypervisor层, Hypervisor 是虚拟机的核心所在。 他为虚拟机提供了虚拟的运行平台,管理了虚拟机操作系统的运行。

但是Docker容器没有这一层, Docker容器提供的是OS级别的进程隔离,这就意味着容器没有Hypervisor带来的性能损耗。

容器和宿主机共享操作系统通过cgroup来实现资源的隔离。

Docker 容器相对于VM有什么优缺点呢?

  1. Docker是开源免费的,vmvare是收费的而且死贵。
  2. Docker容器的创建是秒级的, 虚拟机通常是分钟级的。
  3. Docker容器需要的资源更少, 一台宿主机可以创建上千个application容器, 你创建上千个VM试试?
  4. 因为Docker的root用户依赖于宿主机, 所以docker的安全性更差。
  5. 因为Docker容器提供的是进程级别的隔离, 所以docker的隔离性更差。

Docker 第一篇--初识docker的更多相关文章

  1. Docker 第一篇 认识Docker 的作用好处

    Docker 第一篇 认识Docker 的作用好处 (1)什么是Docker (2)Docker 优势劣势 Docker是去年开始关注并学习的,因为项目用到了AspnetCore 了解了之后总感觉会用 ...

  2. 深入理解javascript对象系列第一篇——初识对象

    × 目录 [1]定义 [2]创建 [3]组成[4]引用[5]方法 前面的话 javascript中的难点是函数.对象和继承,前面已经介绍过函数系列.从本系列开始介绍对象部分,本文是该系列的第一篇——初 ...

  3. go [第一篇]初识

    [第一篇] 简介 Go 是一个开源的编程语言,它能让构造简单.可靠且高效的软件变得容易. Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发 ...

  4. 我们一起学习WCF 第一篇初识WCF(附源码供对照学习)

    前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wc ...

  5. 第一篇:docker 简单入门(一)

    本篇目录 写在最前面的话 docker概念介绍 镜像的概念.容器的概念 docker的安装介绍 写在最前面的话 由于此类文章博客园鉴定为简单文章,所以已经移到csdn[https://blog.csd ...

  6. 第一篇 Windows docker 概述

    本人行业属于智能制造,偏向工厂应用,客户端程序全部是.Net 的 WinForm:本系统的后台是.Net,多系统交互的有java的:因系统发布效率问题,想采用docker Windows 的生产力环境 ...

  7. docker第一篇 容器技术入门

    Container 容器是一种基础工具,泛指任何可以容纳其它物品的工具. Linux Namespaces (docker容器技术主要是通过6个隔离技术来实现) namespace    系统调用参数 ...

  8. docker第一章:docker核心概念及centos6下安装

    Docker三大核心概念 镜像 容器 仓库 镜像 docker镜像类似于虚拟机镜像,可以将它理解为一个面向Docker引擎的只读模板,包含了文件系统. 容器 1.容器是从镜像创建的应用运行实例,容器和 ...

  9. Docker | 第一章:Docker简介

    前言 作为本系列的起始章节,本章节主要是对Docker的相关概念进行简单阐述下.自此也是查阅了相关资料,奈何也都是英文版居多,看的是有点头大的.现在悔不当初不好好学习英文了.o(︶︿︶)o 唉 Doc ...

随机推荐

  1. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

  2. 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少

    开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...

  3. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  4. 阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用

    (原创出处为本博客,http://www.cnblogs.com/linguanh/) 目录: 一,下载 二,解压 三,配置与启动 四,测试 Redis 五,配置 phpRedis 扩展 六,综合测试 ...

  5. JavaScript特性(attribute)、属性(property)和样式(style)

    最近在研读一本巨著<JavaScript忍者秘籍>,里面有一篇文章提到了这3个概念. 书中的源码可以在此下载.我将源码放到了线上,如果不想下载,可以直接访问在线网址,修改页面名就能访问到相 ...

  6. 【HanLP】资料链接汇总

    Java中调用HanLP配置 HanLP自然语言处理包开源官方文档 了解HanLP的全部 自然语言处理HanLP 开源自由的汉语言处理包主页 GitHub源码 基于hanLP的中文分词详解-MapRe ...

  7. LINQ to SQL Select查询

    1. 查询所有字段 using (NorthwindEntities context = new NorthwindEntities()) { var order = from n in contex ...

  8. Android开发学习—— shape标签的使用

    参考这片文章http://www.cnblogs.com/armyfai/p/5912414.html

  9. git 命令总结

    1 删除分支 git push origin :branch name(Task_******) //删除远程分支 git branch -D branch name(Task_******)     ...

  10. Mysql - 函数

    Mysql提供的函数是在是太多了, 很多我都见过, 别说用了. 园子里面, 有人弄了一个比较全的. MYSQL函数 我这里会将他写的完全拷贝下来, 中间会插入一些自己项目中使用过的心得 一.数学函数 ...