加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

10分钟快速掌握Docker必备基础知识

发布时间:2019-08-22 07:17:29 所属栏目:建站 来源:张君鸿
导读:Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种不同的计算机虚拟化技术,也有很多人会觉得,有了虚拟机,那为什么还要使用Docker呢? 带着心里的一
副标题[/!--empirenews.page--]

Docker是时下热门的容器技术,相信作为一名开发人员,你一定听说过或者使用过,很多人会把Docker理解为一个轻量级虚拟机,但其实Docker与虚拟机(VM)是两种不同的计算机虚拟化技术,也有很多人会觉得,有了虚拟机,那为什么还要使用Docker呢?

10分钟快速掌握Docker必备基础知识

带着心里的一点点疑问,让我们一起来学习Docker吧。

没有虚拟化技术的原始年代

我们仔细想想,在没有计算虚拟化技术的“远古”年代,如果我们要部署一个应用程序(Application),一般的步骤是怎么样的?

第一步肯定是先要准备一台物理服务器,然后在物理服务器上安装一个操作系统(Operating System),有了操作系统之后,便在操作系统上安装运行我们的应用程序,这个过程可以用下面的图来表示:

10分钟快速掌握Docker必备基础知识

物理服务器部署应用示意图

那么,这种方式有什么问题呢?其实,在物理机上部署应用有以下几个缺点:

  • 部署非常慢:因为我们得先准备硬件服务器,接着还要安装操作系统,然后再部署应用程序,而且应用程序还有很多的依赖软件,所以这个过程是比较慢的。
  • 成本非常高:主要是物理器成本太高,即使是部署一个简单的应用,也需要一台服务器。
  • 资源浪费:如果应用太简单,也容易浪费硬件资源,比如CPU和内存
  • 迁移和扩展太慢:如果需要迁移应用,或者扩展应用,都要再准备其他的物理服务器,过程很麻烦,也很慢。

那么有什么办法可以解决这些问题呢?答案便是虚拟化技术。

使用虚拟机部署应用程序的年代

什么是虚拟化技术

谈到计算机的虚拟化技术,我们直接想到的便是虚拟机,虚拟机允许我们在一台物理计算机模拟出多台机器,简单地理解,虚拟化技术就是在一台物理计算机上,通过中间虚拟软件层Hypervisor隔离CPU、内存等硬件资源,虚拟出多台虚拟服务器,这样做的话,一台物理服务器便可以安装多个应用程序,达到资源利用的最大化,而且多个应用之间相互隔离,如下图所示:

10分钟快速掌握Docker必备基础知识

虚拟机上部署应用示意图

虚拟机的优点

  • 可以把资源分配到不同的虚拟机,达到硬件资源的最大化利用
  • 与直接在物理机上部署应用,虚拟机更容易扩展应用。
  • 云服务:通过虚拟机虚拟出不同的物理资源,可以快速搭建云服务。

虚拟机的不足之处

虚拟机的不足之处在于对物理服务器资源的消耗,当我们在物理服务器创建一台虚拟机时,便需要虚拟出一套硬件并在上面运行完整的操作系统,每台虚拟机都占用许多的服务器资源。

Docker是什么?

相对于虚拟机的笨重,Docker则更显得轻量化,因此不会占用太多的系统资源。

Docker是使用时下很火的Golang语言进行开发的,其技术核心是Linux内核的Cgroup,Namespace和AUFS类的Union FS等技术,这些技术都是Linux内核中早已存在很多年的技术,所以严格来说Docker并不是一个完全创新的技术,Docker通过这些底层的Linux技术,对Linux进程进行封装隔离,而被隔离的进程也被称为容器,完全独立于宿主机的进程。

所以Docker是容器技术的一种实现,也是操作系统层面的一种虚拟化,与虚拟机通过一套硬件再安装操作系统完全不同。

10分钟快速掌握Docker必备基础知识

docker容器与系统关系示意图

Docker与虚拟机之间的比较

Docker是在操作系统进程层面的隔离,而虚拟机是在物理资源层面的隔离,两者完全不同,另外,我们也可以通过下面的一个比较,了解两者的根本性差异。

10分钟快速掌握Docker必备基础知识

容器与虚拟机的比较【摘自《Docker-从入门到实践》】

从上面的容器与虚拟机的对比中,我们明白了容器技术的优势。

容器解决了开发与生产环境的问题

开发环境与生产环境折射的是开发人员与运维人员之间的矛盾,也许我们常常会听到开发人员对运维人员说的这样一句话:“在我的电脑运行没问题,怎么到了你那里就出问题了,肯定是你的问题”,而运维人员则认为是开发人员的问题。

开发人员需要在本机安装各种各样的测试环境,因此开发的项目需要软件越多,依赖越多,安装的环境也就越复杂。

同样的,运维人员需要为开发人员开发的项目提供生产环境,而运维人员除了应对软件之间的依赖,还需要考虑安装软件与硬件之间的兼容性问题。

就是这样,所以我们经常看到开发与运维相互甩锅,怎么解决这个问题呢?

容器就是一个不错的解决方案,容器能成为开发与运维之间沟通的语言,因为容器就像一个集装箱一样,提供了软件运行的最小化环境,将应用与其需要的环境一起打包成为镜像,便可以在开发与运维之间沟通与传输。

10分钟快速掌握Docker必备基础知识

Docker的版本

Docker分为社区版(CE)和企业版(EE)两个版本,社区版本可以免费使用,而企业版则需要付费使用,对于我们个人开发者或小企业来说,一般是使用社区版的。

Docker CE有三个更新频道,分别为stable、test、nightly,stable是稳定版本,test是测试后的预发布版本,而nightly则是开发中准备在下一个版本正式发布的版本,我们可以根据自己的需求下载安装。

如何安装Docker?

好了,通过前面的介绍,我们应该对Docker有了初步的了解,下面开始进入Docker的学习之旅了。

而学习Docker的第一步,从安装Docker运行环境开始,我们以Docker的社区版本(CE)安装为例。

Docker社区版本提供了Mac OS,Microsoft Windows和Linux(Centos,Ubuntu,Fedora,Debian)等操作系统的安装包,同时也支持在云服务器上的安装,比如AWS Cloud。

在Windows系统上安装

Docker Desktop for Windows

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读