【服务端】Docker简要介绍

Docker从去年就火到现在了, 它是所以火是有理由的: 给予了后端程序一个轻便低消耗的隔离环境. 大大增加了各服务之间的安全性和解决了虚拟机资源消耗的问题

Docker 是一个于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护的工程。Docker 最初是 dotCloud 公司创始人 Solomon Hykes 发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新. 在此之后 Docker 项目加入了 Linux 基金会,并成立推动 OCI(开放容器联盟)

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器(Container)。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 开始,则进一步演进为使用 runC 和 containerd。

Docker 在容器的基础上, 进行了进一步的安全封装, 从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便, 快捷, 且安全。

图片比较了 Docker 和虚拟机方式的不同之处。虚拟机是虚拟出一套硬件后, 在模拟的硬件上运行一个Custom OS,在该OS上再运行所需应用进程;

而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。(因为硬件虚拟实在是太消耗资源了!)

持续交付和部署

使用 Docker 可以通过定制应用镜像来实现跨平台运行. 开发人员用Dockerfile构建Docker镜像,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署, 因为Docker允许你打包程序运行时的依赖库.

文 / 老秋风 审 / 老秋风

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180308G0DU8Z00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券