Docker初探

什么是Docker?

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

Docker通常用于如下场景:

1.web应用的自动化打包和发布;

2.自动化测试和持续集成、发布;

3.在服务型环境中部署和调整数据库或其他的后台应用;

4.从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

为什么要使用Docker

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

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

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

1.更快速的交付部署

对开发和运维人员来说,最希望就是一次创建或者部署,可以在任意地方运行。

开发者可以使用一个标准镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。Docker容器很轻很快!容器的启动时间是秒级的,大量节约了开发,测试,部署的时间。

2.更高效的虚拟化

Docker容器的运行不需要额外的hypervisor支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

3.更轻松的迁移和拓展

Docker容器几乎可以在任意的平台上运行,包括物理机,虚拟机,公有云,私有云,个人电脑,服务器等。这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

4.更简单的管理

使用Docker,只需要小小的修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。


Docker的三个基本概念

镜像(Image)

容器(Container)

仓库(Repository)

ps:了解这个3个概念,就理解了Docker的整个生命周期了

Docker镜像

Docker镜像就是一个只读的版本

例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了Apache或用户需要的其他应用程序。

镜像可以用来创建Docker容器

Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人哪里下载一个镜像来直接使用。

Docker容器

Docker利用容器来运行应用

容器是从镜像创建的运行实例,它可以被启动,开始,停止,删除。每个容器都是相互隔离的,保证安全。

可以把容器看做一个简易版的Linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行其中的应用程序。

注意:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

Docker仓库

仓库是集中存放镜像文件的场所,有时候会把仓库和仓库注册服务器混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库又包含了多个镜像,每个镜像有不同的标签。

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

当然,用户也可以在本地网络内创建一个私有的仓库。

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

注意:Docker仓库的概念跟GIt相似,注册服务器可以理解为GitHub这样的托管服务。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,636评论 15 147
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,554评论 0 120
  • 写这篇文章主要是为了今后毕业论文素材上的整理,同时对docker进行巩固温习。大纲: docker简介docker...
    胡图仙人阅读 7,521评论 2 96
  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,884评论 2 49
  • 我并不是不幸福,也没什么心理心阴影,也没吃过很大的苦,只不过人生的路有点坎坷,可是,光是活在这世上,我就很吃力了。...
    Mandy曼迪阅读 433评论 0 0