Docker 概述

Docker 是一个开源项目,它以基于 Linux 操作系统级镜像来提供一个抽象的、自动分发的虚拟化附加层,通过该层使得在容器中更加容易打包应用。

容器本身仅是基于 Linux 的 cgroups 的一个抽象实现,cgroups 是用于监控和限制进程及其子进程占用资源的底层内核结构。Dokcer 一开始是采用 LinuX Contrainers(LXC)的,但是后来切换到 runC,前者(LXC)以 libcontainer 被熟知。runC 则是跑在跟宿主相同的操作系统,这使得它可以共享很多宿主的操作系统资源,如 RAM、CPU、网络等。

为何 Docker 如此特别?

Docker 在虚拟的容器环境之上增加一个应用部署引擎。它是一个轻量级但十分强大的关于虚拟化技术的开源容器,在容器中还整合了构建并容器化应用的工作流程。

好处:

  • Docker 可以使你迅速地根据组件组合出应用,并消除代码分发过程中遇到的障碍。例如你可以在同一个主机上运行两个应用相同但版本不同的 Docker 容器。
  • Docker 使你的代码尽可能快的通过测试并部署到生成环境。
  • Docker 难以置信的简单易用。无论是在简易版 Linux、OSX,还是 Windows 主机上都可以开始学习 Docker。(Windows 需要直接运行兼容 Linux 内核或者运行 Docker 镜像的虚拟机)。
  • 你可以在几分钟之内容器化你的应用。大多数 Docker 容器在一秒内即可启动。
  • Docker 容器几乎可以在任何地方运行。你可以在台式机、物理服务器、虚拟机上部署容器到数据中心,上传到公有云和私有云均可。这样,你就可以在任何地方运行完全一样的容器。

在我们继续讨论 Docker 惊艳的容器化特征之前,我们先看一下虚拟机和容器的区别。

虚拟机和容器的区别

容器与虚拟机享有相似的资源隔离和分配,但是容器有一套不同的架构方式使得它本身更加便携和高效。我们看下面两个演示二者差别的两个表。

虚拟机

每一个虚拟机包括应用、必要的二进制文件和库、完整的客户操作系统,大小总计数十 GB。

容器

容器包括应用和应用的所有依赖,每个容器都使用容器自身选择的发行版本,但是与其他容器共享宿主操作系统的内核。

在宿主操作系统的用户空间内,他们以隔离的进程方式运行。另外,他们并不像客户操作系统正常运行那样运行所有的进程。而且容器也不绑定任何特别的硬件基础设施!Docker 容器在任何计算机任何硬件基础设施任何云都可以运行。

重要的是,虚拟机需要耗时几分钟来启动,而且对资源敏感,然而容器只需要几秒甚至更少时间启动,在资源较少负载过大时也能应付的了。所以,你可以在本地计算机运行很少的几个虚拟机用于开发目的,但是你可以运行很多很多的容器。这可以使你在开发环境中高效的运行应用环境的完整备份。而且,在生成环境中,这些资源节约很容易转化为成本节约。

容器组件

Docker 容器有一些顶层的组件需要我们先要了解,让我们看一下。

Docker 客户端和服务端

Docker 是 C/S 应用。

Docker 客户端跟服务器(守护程序)通信,服务器来做所有的工作。Docker 通过包含命令行客户端(供 Linux、OS X 和 Windows 使用)和完整 RESTful 接口的二进制文件来分发。你可以在一台 Linux 主机上运行 Docker 守护进程和客户端,或者将你的本地 Docker 客户端连接到另一台 Linux 主机的远程 Docker 守护进程。

Docker 镜像

Docker 镜像是 Docker 的构建基石。这些镜像是 Docer 生命周期中的构建部分。他们是一种分层的形式,根据一系列说明一步一步构建产生的统一文件系统。Dockefile 是一个文本文档,它包含用户可以在命令行调用的所有命令从而组成一个镜像。使用一个基本的 Docker 镜像,可以添加、拷贝文件、执行命令、开放端口。

你可以认为 Docker 文件是一种源码,而镜像是为产生容器而被编译的代码,而容器则是运行时代码。Docker 文件具有高度的便携性,可以随时共享、存储和更新。

注册服务

一旦你构建出一个镜像,你就可以在注册服务中存储它。注册服务有:公共的和私有的。像 Docker Hub、Quay.io、Container Registery by Google Cloud 的注册服务都有公共和私有的选项。你当然也可以在自己机器上运行一个自己的私有注册服务。

容器

容器是镜像的一个运行版本。

你可以认为镜像是 Docker 的构建或者编译的一面,而容器是 Docker 的运行或者执行的一面。

容器的生命周期跟你在容器里执行的命令的生命周期是一致的。一个容器可以只执行一个单个命令后立刻结束,或者可以让容器跟随耗时的命令一直运行。

 

原文链接:http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=2649689770&idx=1&sn=62641b1b28ff98b0c053f9da2d0b4015&scene=4#wechat_redirect

 

posted @ 2016-08-04 15:05  张洪海  阅读(370)  评论(0编辑  收藏  举报