现在的位置: 首页 > 云计算 > Docker > 正文
docker容器技术系列一:基本概念
2015年10月28日 Docker ⁄ 共 1622字 docker容器技术系列一:基本概念已关闭评论 ⁄ 被围观 5,912 views+

前言:从去年下半年开始,我们就尝试在使用docker部署生产应用,至现在已经有十多个项目使用了docker容器部署,docker为我们节约了大量的服务器资源,并提高了运维的交付能力。我和我的小伙伴们在学习和使用docker的过程中遇到了很多的坑,现在我将我所理解的docker相关技术写成两个系列文章《docker容器技术系列》和《docker管理进阶系列》供大家参考。

一、什么是docker?

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

    Docker基础是Linux 容器(LXC)基础,并对其进行了更高层面的封装,使得用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。

    Docker容器与传统虚拟机不同,容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。参考如下对比图:

c5a20e74-306c-4125-b266-c3ef53c2f6f0

ddbfceb5-6aa5-4e78-ac41-af2e4c2347cc

二、为什么要用docker?

2.1 比虚拟机高效:

    如前描述,因容器复用了本地主机操作系统,仅仅是封装了容器运行所需的软件环境(从这个角度看可以参考RPM安装包),因此与主机上直接运行软件所需的资源几乎是一样的。不像虚拟机那样需要额外的内存、CPU等来支持虚拟机操作系统的运行。

2.2 快速交付和部署:

对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。而且可以保证每一个地方运行的环境都是一模一样的,不会因为开发环境与生产环境不同而导致某些问题。

       docker容器的启动更是秒级的,因此可以随时快速生产、关闭。

2.3 轻松迁移和扩展:

       docker镜像可以在任意环境中迁移,而不会出现兼容性问题,迁移过程轻松方便。

2.4 管理简单:

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

2.5 docker对比传统虚拟机

image

三、docker镜像、容器、仓库的基本概念

3.1 镜像:

Docker 镜像就是一个只读的模板。

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

镜像可以用来创建 Docker 容器。

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

3.2 容器:

Docker 利用容器来运行应用。

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

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

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

3.3 仓库:

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

      仓库分为公开仓库(Public)和私有仓库(Private)两种形式。

      最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 其作为默认docker仓库,但在国内下载速度很慢。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

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

抱歉!评论已关闭.

×