(一)初识Docker与容器

2021-08-26  本文已影响0人  deve_雨轩

Docker 是基于 Go 语言实现的开源容器项目,主要用于创建、管理和编排容器。 它诞生于 2013 年年初,最初是由一家名为 dotCloud 的公司利用 Linux 容器技术开发的一套内部工具。自开源后受到业界广泛的关注与参与,dotCloud 公司也随之快速发展壮大, 在 2013 年年底直接改名为 Docker Inc,并专注于 Docker 相关技术和产品的开发,目前已经成为全球最大的 Docker 容器服务提供商。

Docker 的构想是要实现“ Build, Ship and Run Any App, Anywhere ”,即通过对应用的封装(Packaging)、分发( Distribution )、部署( Deployment)、运行( Runtime )生命周期进行管 理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件, 既可以是一个 Web 应用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。基于 Linux 平台上的多项开源技术,Docker 提供了高效、敏捷和轻量级的容器方案, 并支持部署到本地环境和多种主流云平台。可以说,Docker 首次为应用的开发、运行和部署提供了“一站式”的实用解决方案。

在 LXC 的基础上, Docker 进一步优化了容器的使用体验,让它进入寻常百姓家。首先,Docker 提供了各种容器管理工具(如分发、版本、移植等),让用户无须关注底层的操作,更加简单明了地管理和使用容器;其次,Docker 通过引入分层文件系统构建和高效的镜像机制,降低了迁移难度,极大地改善了用户体验。用户操作 Docker 容器就像操作应用自身一样简单。

早期的 Docker 代码实现是直接基于 LXC 的。自 0.9 版本开始,Docker 开发了 libcontainer 项目作为更广泛的容器驱动实现,从而替换掉了 LXC 的实现。目前,Docker 还积极推动成立了 rune 标准项目,井贡献给开放容器联盟,试图让容器的支持不再局限于 Linux 操作系统,而是更安全、更开放、更具扩展性。

Docker 运行时与编排引擎

多数技术人员在谈到 Docker 时,主要是指 Docker 引擎。Docker 引擎是用于运行和编排容器的基础设施工具。有 VMware 管理经验的读者可以将其类比为 ESXi。ESXi 是运行虚拟机的核心管理程序,而 Docker 引擎是运行容器的核心容器运行时。

Docker 引擎主要有两个版本:企业版 (EE) 和社区版 (CE)。
每个季度,企业版和社区版都会发布一一个稳定版本。社区版本会提供 4 个月的支持,而企业版本会提供 12 个月的支持。
社区版还会通过 Edge 方式发布月度版。

为什么要使用Docker

对开发和运维( DevOps )人员来说,最梦寐以求的效果可能就是一次创建或配置,之后可以在任意地方、任意时间让应用正常运行,而 Docker 恰恰是可以实现这一终极目标的“瑞士军刀”。具体说来,在开发和运维过程中,Docker 具有如下几个方面的优势:

Docker 容器除了运行其中的应用外,基本不消耗额外的系统资源,在保证应用性能的同时,尽量减小系统开销。传统虚拟机方式运行 N 个不同的应用就要启用 N 个虚拟机(每个虚拟机需要单独分配独占的内存、磁盘等资源),而 Docker 只需要启动 N 个隔离得“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。当然,在隔离性方面,传统的虚拟机方式提供的是相对封闭的隔离。但这并不意味着 Docker 不安全。 Docker利用 Linux 系统上的多种防护技术实现了严格的隔离可靠性, 并且可以整合众多安全工具。从 1.3.0 版本开始,Docker重点改善了容器的安全控制和镜像的安全机制,极大地提高了使用 Docker 的安全性。Docker 在运行应用上跟传统的虚拟机方式相比具有如下:

特性 容器 虚拟机
启动速度 秒级 分钟级
性能 接近原生 较弱
内存代价 很小 较多
硬盘使用 一般为MB 一般为GB
运行密度 单机支持上千个容器 一般几十个
隔离性 安全隔离 完全隔离
迁移性 优秀 一般

Docker 核心概念

Docker 大部分的操作都围绕着它的三大核心概念:镜像、容器和仓库。

Docker 镜像

Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了 JDK。可以把它称为一个 JDK 镜像。镜像是创建 Docker 容器的基础。通过版本管理和增量的文件系统,Docker 提供了一套十分简单的机制来创建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。

Docker 容器

Docker 容器类似于一个轻量级的沙箱,Docker 利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。它可以启动、开始、停止、删除,而这些容器都是彼此相互隔离、互不可见的。可以把容器看作一个简易版的 Linux 系统环境(包括 root 用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。

Docker 仓库

Docker 仓库类似于代码仓库,是 Docker 集中存放镜像文件的场所。根据所存储的镜像公开分享与否,Docker 仓库 可以分为公开仓库( Public )和私有仓库( Private )两种形式。Docker 也支持用户在本地网络内创建一个只能自己访问的私有仓库。
当用户 创建了自己的镜像之后就可以使用 push 命令将它上传到指定的公有或者私有仓 库。 这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上 pull 下来就可以了。

上一篇下一篇

猜你喜欢

热点阅读