docker容器技术系列一:基本概念

1、什么是docker?

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

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

  • Docker容器与传统虚拟机不一样,容器是在操做系统层面上实现虚拟化,直接复用本地主机的操做系统,而传统方式则是在硬件层面实现。参考以下对比图:
    图片
    图片服务器

2、为何要用docker?

2.1 比虚拟机高效:网络

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

2.2 快速交付和部署:运维

  • 对开发和运维(devop)人员来讲,最但愿的就是一次建立或配置,能够在任意地方正常运行。并且能够保证每个地方运行的环境都是如出一辙的,不会由于开发环境与生产环境不一样而致使某些问题。ide

  • docker容器的启动更是秒级的,所以能够随时快速生产、关闭。spa

2.3 轻松迁移和扩展:操作系统

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

2.4 管理简单:

  • 使用 Docker,只须要小小的修改,就能够替代以往大量的更新工做。全部的修改都以增量的方式被分发和更新,从而实现自动化而且高效的管理。

2.5 docker对比传统虚拟机

图片

3、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 这样的托管服务。

相关文章
相关标签/搜索