一、【Docker笔记】进入Docker世界
我们平时判断一个电脑的性能主要看什么?磁盘读写?CPU的主频高低?还是内存的大小?可是作为个人使用者来说,这些参数高一些足够我们去使用了,可是对于一个大型系统甚至是超大型系统,当前的硬件是远远达不到的。而作为当前的云计算时代,虚拟化技术就发挥了自己的独特的作用。
随着信息技术的快速发展,虚拟化技术也在不断的丰富和创新。从20世纪60年代的IBM推出大型主机虚拟机到现在的X86平台上的虚拟化,虚拟化既可以通过硬件模拟来实现,同时也可通过操作系统来实现,而当前的容器虚拟化就是充分地利用了操作系统的机制和特性,实现轻量级的虚拟化,在这些虚拟化技术中,Docker又是其中的佼佼者。
一、什么是Docker
1、Docker一个开源项目
Docker是一个基于Go语言实现的云开源项目,它诞生于2013年,最初发起者未dotCloud公司。目前Docker已经成为了一个生态体系,并已加入Linux基金会,遵循Apache2.0协议。目前主流的Linux操作系统都支持Docker,而Docker的主要目标是通过对应用组件的封装、分发、部署、运行等生命周期的管理,达到应用组件(Web应用 / 数据库服务 / 操作系统或编译器等)级别的“一次封装,到处运行”。
2、Linux容器技术
Docker引擎的基础就是Linux容器(Linux Containers,LXC)技术。对于容器技术,IBM DeveloperWorks给出了描述:容器有效地将由单个操作系统管理的资源划分到孤立的组中,以便更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这即不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何专门的解释机制。同时也避免了准虚拟化和系统调用替换中的复杂性。
当然Linux容器也并不是一个全新的概念,只是后来LXC项目借鉴了前人成熟的容器设计理念,并基于一些新的内核特性实现了扩展性的虚拟化容器技术。关键的是,LXC由此被集成到了Linux内核中,而成为Linux系统轻量级容器技术的事实标准。
3、从Linux容器到Docker
在Linux容器技术的基础上,Docker优化了容器的使用体验。同时,Docker提供了各种容器管理工具让用户无需关注底层的操作,可以简单地管理和使用。
二、为什么要使用Docker
1、Docker容器虚拟化的好处
高效地构建应用,开发者能方便地创建运行在云平台上的应用,应用能够脱离底层机器,同时在任何时间和任何地点都是可获取的。而Docker提供容器打包应用,当我们在迁移系统时,只要启动需要的容器就可以了。这将节约时间,并降低部署过程出现问题的风险。
2、Docker在开发和运维中的优势
对于开发和运维人员来说,最理想的就是一次性地创建和配置,可以在任意环境、任意时间让应用正常地运行。而Docker即可实现:1、更快速的交付和部署。2、更高效的资源利用。3、更轻松的迁移和扩展。4、更简单的更新管理。
3、Docker与虚拟机对比
作为轻量级的虚拟化方式,Docker在运行应用上跟传统的虚拟机方式相比具有显著的优势:
1、Docker容器更快,启动和停止都是秒级。
2、Docker容器对系统资源需求更少。
3、Docker指令简明,学习成本底。
4、Docker通过Dockerfile配置文件支持灵活的自动化创建和部署机制,提高工作效率。
| 特性 | 容器 | 虚拟机 |
|---|---|---|
| 启动速度 | 秒级 | 分钟级 |
| 硬盘使用 | 一般未MB | 一般为GB |
| 性能 | 接近原生 | 弱于 |
| 系统支持量 | 单机支持上千个容器 | 一般几十个 |
| 隔离性 | 安全隔离 | 完全隔离 |
三、虚拟化与Docker比较
虚拟化技术是一个通用的概念,在不同的领域有不同的理解。而在计算领域,一般指的是计算虚拟化或服务器虚拟化。虚拟化的核心是对资源进行抽象,目标为在同一机器上运行多个系统或应用,提高系统资源的利用率,同时降低成本、方便管理和容错容灾等好处。
从类型区分,虚拟化技术可分为基于硬件的虚拟化和基于软件的虚拟化。而我们一般讨论的都是基于软件的虚拟化,而基于软件的虚拟化从对象层次上又分为应用虚拟化和平台虚拟化。其中主要讨论的又是平台虚拟化,平台虚拟化又可分为完全虚拟化、硬件辅助虚拟化、部分虚拟化、超虚拟化、操作系统级虚拟化。而Docker就属于操作系统级虚拟化。
表1:传统的虚拟化方式
| 应用程序 | 应用程序 |
| 运行时环境 | 运行时环境 |
| 虚拟机操作系统 | 虚拟机操作系统 |
| 虚拟机管理程序 | |
| 宿主机操作系统 | |
| 硬件层 | |
表2:Docker的虚拟化方式
| 应用程序 | 应用程序 |
| 运行时环境 | 运行时环境 |
| Docker容器支持 | |
| 宿主机操作系统 | |
| 硬件层 | |
一、【Docker笔记】进入Docker世界的更多相关文章
- 二、【Docker笔记】Docker的核心概念及安装
Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 Docker镜像其实与虚拟机镜像很类似, ...
- 三、【Docker笔记】Docker镜像
镜像是Docker的三大核心概念之一.Docker在运行容器之前,本地需要存有镜像,若不存在则Docker会首先尝试从默认的镜像仓库中去下载,当然我们也可以去配置自己的仓库,如此就会从我们配置的仓库中 ...
- 四、【Docker笔记】Docker容器
容器是Docker的另一个核心概念,容器就是镜像的一个运行实例,只是它具有一个可写的文件层,而镜像是一个只读的文件. 一.创建容器 1.新建容器 我们可以使用 docker create 命令来创建一 ...
- 六、【Docker笔记】Docker数据管理
前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...
- 七、【Docker笔记】Docker中网络基础配置
一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...
- Docker笔记一:Docker介绍
目录 什么是Docker? Docker的核心概念 Docker镜像命令 Docker容器命令 Docker实战 查看我的镜像 启动Redis Docker中国镜像加速 血与泪的教训 什么是Docke ...
- Docker笔记(二):Docker管理的对象
原文地址:http://blog.jboost.cn/2019/07/14/docker-2.html 在Docker笔记(一):什么是Docker中,我们提到了Docker管理的对象包含镜像.容器. ...
- Docker笔记(四):Docker镜像管理
原文地址:http://blog.jboost.cn/2019/07/16/docker-4.html 在Docker中,应用是通过容器来运行的,而容器的运行是基于镜像的,类似面向对象设计中类与对象的 ...
- Docker笔记(七):常用服务安装——Nginx、MySql、Redis
开发中经常需要安装一些常用的服务软件,如Nginx.MySql.Redis等,如果按照普通的安装方法,一般都相对比较繁琐 —— 要经过下载软件或源码包,编译安装,配置,启动等步骤,使用 Docker ...
随机推荐
- TCP 可靠传输与流量控制的实现
TCP 可靠传输与流量控制的实现 一.TCP可靠传输的实现 现在所讲的可靠传输是根据之前所说的可靠传输原理的实现,是现实中应用的技术. 1.1.以字节为单位的滑动窗口 如图A端一份文件分为了多个字节, ...
- PAT-进制转换-B1022 D进制的A+B (20分)
题目描述: 输入两个非负10进制整数A和B(≤230-1),输出A+B的D(1<D≤10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 样例: 输入:123 456 8 输出: ...
- K-means真的不能使用曼哈顿距离吗?
问题 说到k-means聚类算法,想必大家已经对它很熟悉了,它是基于距离计算的经典无监督算法,但是有一次在我接受面试时,面试官问了我一个问题:“k-means为什么不能使用曼哈顿距离计算,而使用欧式距 ...
- .NET Core 基于Websocket的在线聊天室
什么是Websocket 我们在传统的客户端程序要实现实时双工通讯第一想到的技术就是socket通讯,但是在web体系是用不了socket通讯技术的,因为http被设计成无状态,每次跟服务器通讯完成后 ...
- 前端如何真正晋级成全栈:腾讯 Serverless 前端落地与实践
Serverless 是当下炙手可热的技术,被认为是云计算发展的未来方向,拥有免运维.降低开发成本.按需自动扩展等诸多优点.尤其是在前端研发领域,使用 Node 开发云函数,可以让前端工程师更加专注于 ...
- idea导入 spring framework项目
准备的环境:gradle,idea 注意:gradle版本不一致会报各种错误,那么怎么查找依赖的版本呢? 首先在git上把spring framework项目拉取下来, 步骤一:复制URL路径 步骤二 ...
- 修改gridfilters.js源码,往后台多传递一个参数,并设置NumericFilter、StringFilter默认提示信息
创作不易,转载请注明出处!!! 效果 修改:ext-extend.js源码 在最后面添加3行,重写方法 代码拷贝区 Ext.override(Ext.ux.grid.GridFilters, { me ...
- [Tensorflow-CPU完整安装过程-Win10]新手各种踩过的坑
流程介绍:先安装Anaconda(不同Python版本对于Anaconda不同!!见图),然后就是在Anaconda Prompt里面安装Tensorflow即可. 环境介绍:Anaconda3-4. ...
- 开篇词The Start以及[Vjudge][HDU2242]空调教室
开篇 这是我写的第一篇记录好题的博客,也是博客园上我发布的第一篇博客. 以后我的所有博客都将在洛谷和博客园上同时发布,同志们有兴趣的在哪里都可以看一看. [https://www.luogu.com. ...
- AspNetCore源码解析_1_CORS中间件
概述 什么是跨域 在前后端分离开发方式中,跨域是我们经常会遇到的问题.所谓的跨域,就是处于安全考虑,A域名向B域名发出Ajax请求,浏览器会拒绝,抛出类似下图的错误. JSONP JSONP不是标准跨 ...