谈谈我对docker的理解_docker

先给大家说下docker概念

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker优势:

更快速的交付和部署(一次创建和配置,可以在任意地方正常运行)

更高效的虚拟化(不需要hypervisor支持,内核级虚拟化)

更轻松的迁移和扩展(在任意平台移植)

更简单的管理()

关于docker理解

一、首先是关于虚拟化

虚拟化我们可以简单的理解为一种资源管理方式。有如下几种虚拟化的方式:

1.完全虚拟化:对底层硬件实现完全的虚拟。例如:Vmware Workstation

2.部分虚拟化:只对部分硬件资源的虚拟。

3.操作系统级虚拟化:内核通过创建多个虚拟操作系统实例来隔离各个进程。

docker就是属于操作系统级的虚拟化。

二、其次是对docker的理解

docker的思想来源于集装箱,试问集装箱解决了什么问题?
试想,在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会相互影响。那么我就不需要专门运送水果的船和专门运送化学物品的船了。只要这些货物在集装箱里装的好好的,那我就可以用一艘大船把它们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮,而docker就是集装箱。

Docker的优点:

1.更快速地交付和部署

不同的应用程序可能会有不同的应用环境。比如,.net开发的网站和.php开发的网站所依赖的软件就不一样,如果把他们所依赖的软件都安装在一个服务器上,就要调试很久,不仅麻烦,还会造成一些诸如IIS和Apache访问端口冲突这样的问题。这个时候你就要隔离.net开发的网站和.php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机并在不同的虚拟机上部署不同的应用,但是虚拟机开销比较大。此时docker就可以实现虚拟机隔离不同应用的这种功能,并且开销比虚拟机小,小就意味着省钱。

2.更轻松的迁移和扩展

我们再来举个简单的例子。比如你开发的时候用的是Ubuntu,但是运维管理的都是CentOS,运维在把你开发的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转CentOS的问题,比如:存在一个特殊版本的数据库,只支持Ubuntu而不支持CentOS,那么在转移的过程中就得想办法解决这样的问题。但这时候如果有docker,你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。

3.更高效的虚拟化和更简单的管理

在服务器负载方面,如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会被有效的利用起来。而且Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

Docker的三个基本概念:

镜像、容器、仓库

三、Docker的三个基本概念的详解

1.镜像

Docker在英语当中的本意是“物件/码头工人”,docker容器的意思为物件的容器。关于镜像,举个简单的例子,我们经常安装的windows操作系统,先要从网上下载ISO镜像文件,经解压后才能安装和使用。Docker也是一样,我们要向创建docker容器,就需要创建容器的类似于ISO镜像文件的docker镜像文件。

2.容器

关于容器,大家肯定并不陌生。没错,docker容器就是来管理不同架构的应用程序的。从本质上来说,容器是从镜像创建的运行实例。容器与容器之间是相互隔离的,每个容器都是保证安全的平台。

3.仓库

仓库是集中存放镜像文件的场所,但是在这里要区分两个概念:仓库和仓库服务注册器。仓库注册服务器往往存放着多个仓库,每个仓库又包含着多个镜像。

仓库分为公开仓库和私有仓库,最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内的公开仓库包括Docker Pool等,可以提供大陆用户更稳定快速的访问。

除此之外,用户可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上pull下来就可以了。

小结:

作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。

首先,Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快的多。其次,Docker对系统资源的利用率很高,一台主机上可以同时运行千个Docker容器。

容器除了运行其中应用外,基本不消耗额外的系统资源,使的应用的性能很高,同时系统开销尽量小。传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而Docker只需要启动10个隔离的应用即可。

时间: 2024-08-16 23:36:44

谈谈我对docker的理解_docker的相关文章

谈谈对Spring IOC的理解

学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家分享网上的一些技术大牛们对Spring框架的IOC的理解以及谈谈我对Spring Ioc的理解. 一.分享Iteye的开涛对Ioc的精彩讲解 首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinniansh

蘑菇街 私有云Docker实例应用_docker

对于蘑菇街而言,每年的11.11已经成为一年中最大的考验,考验的是系统稳定性,容灾能力,紧急故障处理,运维等各个方面的能力.蘑菇街的私有云平台,从无到有,已经经过了近一年的发展,生产环境上经历了3次大促,稳定性方面得到了初步验证.本文我将从架构.技术选型.应用等角度来谈谈蘑菇街的私有云平台. 另,ArchSummit全球架构师峰会北京站将于2015年12月18日~19日在北京国际会议中心召开,大会设置了<揭秘双十一背后的技术较量>专题来深入解读双十一背后的技术故事,欢迎关注. 蘑菇街的私有云平

搭建一个私有的Docker registry教程_docker

为什么需要搭建一个私有的registry呢?嗯,对于新手来说,Docker Hub(一个Docker公共仓库)只允许你拥有一个免费的私有版本库(repo).其他的公司也开始提供类似服务,但是价格可不便宜.另外,如果你需要用Docker部署一个用于生产环境的应用,恐怕你不希望将这些镜像放在公开的Docker Hub上吧! 这篇文章提供了一个非常务实的方法来处理搭建私有Docker registry时出现的各种错综复杂的情况.我们将会使用一个运行于DigitalOcean(之后简称为DO)的非常小巧

在Ubuntu上使用Grafana监控Docker的方法_docker

前言 Grafana 是一个有着丰富指标的开源控制面板.在可视化大规模测量数据的时候是非常有用的.根据不同的指标数据,它提供了一个强大.优雅的来创建.分享和浏览数据的方式. 它提供了丰富多样.灵活的图形选项.此外,针对数据源(Data Source),它支持许多不同的存储后端.每个数据源都有针对特定数据源的特性和功能所定制的查询编辑器.Grafana 提供了对下述数据源的正式支持:Graphite.InfluxDB.OpenTSDB. Prometheus.Elasticsearch 和 Clo

阿里云CentOS 6.5 安装Docker详细步骤_docker

因为阿里云的CentOS 6.5版本默认内核kernel版本是2.6的,比较低.安装docker的后,运行不了. 步骤: 1.使用命令更新: yum update 2.安装Docker.这里忽略500字.... 3.使用命令查看IP: ifconfig 将看到有类似的结果: eth0 Link encap:Ethernet HWaddr 00:16:3E:00:6B:5D inet addr:10.169.127.193 Bcast:10.169.127.255 Mask:255.255.248

WIN10下安装Docker的教程_docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1.去官方网站下载toolbox-->https://www.docker.com/toolbox 速度慢可以去这里下载https://get.daocloud.io/toolbox/ 2.安装过程直接下一步直至完成即可 3.安装完成点击桌面显示如下错误:--点击浏览找到git/bin目录下

谈谈JavaScript中function多重理解

JavaScript 中的 function 有多重意义.它可能是一个构造器(constructor),承担起对象模板的作用: 可能是对象的方法(method),负责向对象发送消息.还可能是函数,没错是函数,和对象没有任何关系独立存在的可以被调用的函数. 由于语言设计者的妥协,在 JavaScript 加入了一些 class 相关的特性,以使 JavaScript 看起来确实象 Java,可以 "面向对象".虽然 JavaScript 添加了 new 和 this, 但却没有 clas

Mac上将brew安装的MySql改用Docker执行操作过程_docker

docker是最近大热的技术,堪称技术界的网红.本着技术人折腾的本性,尝试将本地的MySql服务器改成用docker执行,本文记录折腾过程,以作备忘. 步骤如下: 1:安装docker 自己找文档去 2:使用mysql官方发布的docker image,命令如下 docker pull mysql/mysql-server:5.7.16 ##(这是本文发布时候MySql最新稳定版,并且最好和本地的Mysql版本一致,否则第三步可能会有问题.) 因为GFW的缘故,这个过程有点漫长.命令执行完之后,

在windows下的安装Docker的教程_docker

非官方备注:你的CPU一定要支持VT才可以,笔者的笔记本T6400不支持VT是装不上的,所以一定要支持VT,好在笔者的MAC很OK,公司电脑也给力,如果在win7系统安装需要是64的系统. 上一节我们介绍了在ubuntu和centos下的安装,当然都是基于64位系统的,在学习过程中,你可能没有这些东西,当然你可以用virtualbox或者Vmware虚拟化出来,今天我们介绍的是官网给我们提供的using vagrant! 介绍 Docker可以用虚拟主机技术运行在Windows上像virtual