由于本人学习精力有限,不能像大学时那样,每个笔记都认真的手敲记录,一些地方会截图展示,并会添加自己的理解和备注,建议大家也做自己的笔记,看别人的可以,但是自己动手并思考记忆更深刻。

1.什么是虚拟化

1.1 概念



虚拟化技术的目的:最大化的利用资源

  • 高性能的电脑,可以安装虚拟机vmvare等进行虚拟化,拆分成多台机器,我们在学习linux的时候就不用买一个机器再装linux环境了
  • 多台低性能的电脑,通过虚拟化技术(具体怎么实现,后面需要再查资料)组合,提供更优秀的功能,而不是直接丢弃

    如果安装虚拟机时候,报如下错误,是本机虚拟化支持没有启用,需要开机进入BIOS开启虚拟化支持,具体操作可百度:

1.2 虚拟化架构

1.21 全虚拟化

全虚拟化模式中,客户机操作系统与宿主机操作系统没有无关,客户机操作系统可以是linux,可以是windows等。

1.22 操作系统层虚拟化

操作系统层虚拟化中,要求客户机操作系统的内核要与宿主机操作系统的内核保持一致。例如你的宿主机系统是windows内核,则虚拟出来的客户机操作系统也必须是windows系列,如window7,xp等。我的理解就是宿主机操作系统形式上被分成了几个部分,分别给对应的操作系统使用hs = hs0 +hs1 +hs2,这样子。

1.23 平台虚拟化(又称作硬件虚拟化)

可能大家看这个概念,不明白在说啥(反正我是的),但是结合下图,我们可以发现,假设公司买了一台服务器,采用平台虚拟化技术,就可以将这台服务器虚拟化为3台,各自做不同的事情。直接在硬件层面进行的虚拟化,是不没有看到宿主机,故也称作硬件虚拟化。



1.3 hypervisor

上面所讲的三种虚拟化方式,无论哪种,它的核心都是依赖于介于硬件层和操作系统之间的这个虚拟化技术的支撑,才得以实现。

2.docker介绍以及和虚拟机的比较

前言:为什么有了虚拟机啊还要用docker容器技术类?为了最大化利用资源。

虚拟机的不足之外来自于对物理服务器资源的消耗,当我们在物理服务器创建一台虚拟机时,便需要虚拟出一套硬件并在上面运行完整的操作系统,每台虚拟机都占用许多的服务器资源。相对于虚拟机的笨重,Docker则更显得轻量化,因此不会占用太多的系统资源。

2.1 镜像

镜像(Image)、容器(Container)与仓库(Repository),这三个是Docker中最基本也是最核心的概念,对这三个概念的掌握与理解,是学习Docker的关键。

什么是Docker的镜像?

Docker本质上是一个运行在Linux操作系统上的应用,而Linux操作系统分为内核和用户空间,无论是CentOS还是Ubuntu,都是在启动内核之后,通过挂载Root文件系统来提供用户空间的,而Docker镜像就是一个Root文件系统。

Docker镜像是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等文件,另外还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

镜像是一个静态的概念,不包含任何动态数据,其内容在构建之后也不会被改变。

2.2 容器

Docker的镜像是用于生成容器的模板,镜像分层的,镜像与容器的关系,就是面向对象编程中类与对象的关系,我们定好每一个类,然后使用类创建对象,对应到Docker的使用上,则是构建好每一个镜像,然后使用镜像创建我们需要的容器。

2.3 仓库

在前面的例子中,我们使用两种方式构建镜像,构建完成之后,可以在本地运行镜像,生成容器,但如果在更多的服务器运行镜像呢?很明显,这时候我们需要一个可以让我们集中存储和分发镜像的服务,就像Github可以让我们自己存储和分发代码一样。

Docker Hub就是Docker提供用于存储和分布镜像的官方Docker Registry,也是默认的Registry,其网址为https://hub.docker.com,前面我们使用docker pull命令便从Docker Hub上拉取镜像。

Docker Hub有很多官方或其他开发提供的高质量镜像供我们使用,当然,如果要将我们自己构建的镜像上传到Docker Hub上,我们需要在Docker Hub上注册一个账号,然后把自己在本地构建的镜像发送到Docker Hub的仓库当中,Docker Registry包含很多个仓库,每个仓库对应多个标签,不同标签对应一个软件的不同版本。

2.4 container与vm区别,未来是容器的

从第一张图中,可以看出来,为啥docker容器技术比虚拟机更节省资源。

可参考此文章快速入门docker

docker学习一的更多相关文章

  1. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

  2. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  3. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  4. docker学习资料整理(持续更新中..)

    docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...

  5. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  6. Docker学习总结之Run命令介绍

    Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...

  7. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

  8. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  9. docker学习笔记(一)—— ubuntu16.04下安装docker

    docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...

  10. Docker 学习8 Dockerfile详解2

    一.继续上章节Docker学习7 CMD命令后. 11.ENTRYPOINT a.容器启动后相当于会启动ENTRYPOINT + CMD 命令,CMD相当于参数传给entrypoint的 [root@ ...

随机推荐

  1. linux的 复制 删除 解压 压缩 打包

    liunx 删除 删除文件夹实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 2 删除文件使用实例: r ...

  2. .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 介绍)--学习笔记

    2.6.6 RabbitMQ -- Masstransit 介绍 Masstransit 是什么 Quickstart 消息 Message Masstransit 是什么 Masstransit 是 ...

  3. P3714 [BJOI2017]树的难题 点分治+线段树合并

    题目描述 题目传送门 分析 路径问题考虑点分治 对于一个分治中心,我们可以很容易地得到从它开始的一条路径的价值和长度 问题就是如何将不同的路径合并 很显然,对于同一个子树中的所有路径,它们起始的颜色是 ...

  4. 笔记:学习go语言的网络基础库,并尝试搭一个简易Web框架

    在日常的 web 开发中,后端人员常基于现有的 web 框架进行开发.但单纯会用框架总感觉不太踏实,所以有空的时候还是看看这些框架是怎么实现的会比较好,万一要排查问题也快一些. 最近在学习 go 语言 ...

  5. 请求接口获取的json 字符串 前后不能有 双引号

    请求接口获取的json 字符串 前后不能有 双引号 否则JSON.parse 转换会报错

  6. 剑指Offer-连续子数组中的最大和

    题目 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为 O(n). 输入 [1,-2,3,10,-4,7,2,-5] 返回值 ...

  7. 【System】paging和swaping之间的区别是什么?

    分析paging和swapping的区别,首先要了解内存管理 当虚拟内存用二级存储(物理磁盘)作为主存的扩展时,内核会尽力保持最活跃的数据在主存中.有一下两个内核例程做这件事情: 1.交换(swapp ...

  8. CTFHub - Web(六)

    命令注入: 1.进入页面,测试127.0.0.1, 关键代码: <?php $res = FALSE; if (isset($_GET['ip']) && $_GET['ip'] ...

  9. linux下安装zsh和p10k的详细过程

    目录 下载zsh 下载oh-my-zsh 切换shell 下载p10k 下载zsh sudo apt-get install zsh sudo apt-get install git 下载oh-my- ...

  10. tail -f 在对文件进行动态追踪时失效的问题

    在我是用 tail -f file.txt 对这个文件进行动态追踪时: 我重新打开一个新的终端进行vim编辑这个文件并且保存 这是我们发现,tail -f file.txt'动态追踪的这个文件没有任何 ...