Docker 是什么?
"Docker"一词指代了多个概念,包括开源社区项目、开源项目使用的工具、主导支持此类项目的公司 Docker Inc.,以及该公司官方支持的工具。这些技术和公司的同名可能会造成混淆。
以下简要说明 Docker 以便区分:
- IT 软件"Docker"是支持创建和使用 Linux® 容器的容器化技术。
- 开源 Docker 社区致力于改进这类技术,并免费提供给所有用户,使之获益。
- Docker Inc. 公司凭借 Docker 社区产品起家,主要负责提升社区版本的安全性,并将技术进步与广大技术社区分享。此外,它还专门对这些技术产品进行完善和安全固化,以服务于企业客户。
借助 Docker,您可将容器当做轻巧、模块化的虚拟机来使用。同时,您还将获得高度灵活性,实现对容器的高效创建、部署及复制,并在环境之间迁移它们,从而有助于您针对云来优化应用。
Docker 的原理是什么?
Docker 技术使用 Linux 内核和内核功能(例如 Cgroup 和命名空间)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。
容器工具(包括 Docker)可提供基于镜像的部署模式。这使得它能够轻松跨多种环境,与其依赖程序共享应用或服务组。Docker 还可在这一容器环境中自动部署应用(或者合并多种流程,以构建单个应用)。
此外,由于这些工具基于 Linux 容器构建,使得 Docker 既易于使用,又别具一格,因此它可为用户提供前所未有的应用访问权限、快速部署以及版本控制和分发能力。
Docker 容器的优势是什么?
模块化
Docker 容器化方法注重在不必停止整个应用的情况下,单独提取部分应用进行更新或修复的能力。除了这种基于微服务的方法,您还可以采用与面向服务的架构(SOA)类似的方法,在多个应用间共享进程。
层和镜像版本控制
每个 Docker 镜像文件都包含多个层,它们组合成一个镜像。每当镜像发生改变时,就会创建一个新的镜像层。每当用户指定命令时,例如 run 或 copy,就会创建一个新的层。
Docker 可重复利用这些层来构建新容器,因而加快了构建过程。镜像之间共享中间变化,进一步提升了速度、规模以及效率。版本控制也是层所固有的功能:每次发生新的更改时,您大都会获得一个内置的更改日志,拥有对容器镜像的全盘管控。
回滚
回滚也许是层最值得一提的功能。每个镜像有多个层。不喜欢镜像的当前迭代?将它回滚到上一版本。这一功能还支持敏捷开发方法,帮助实现持续集成和部署(CI/CD),使其在工具层面成为一种现实。
快速部署
新硬件的启用、运行、置备和供应在过去需要耗费数日,所需的投入和开销也很繁重。基于 Docker 的容器可以将部署缩短到只用几秒。通过为每个进程创建容器,您可以快速将这些进程共享给新的应用。而且,添加或移动容器时无需重启操作系统,大大缩短了部署时间。除了部署时间更短外,您还可以轻松无虞、经济高效地创建和销毁容器创建的数据。
因此,Docker 技术是一种更加精细、可控、基于微服务的技术,可为企业提供更高的效率价值。
使用 Docker 有什么局限?
Docker 本身能够管理单个容器。但随着您开始使用越来越多的容器和容器化应用,并把它们划分成数百个部分,很可能会导致管理和编排变得困难。最终,您需要后退一步,对容器实施分组,以便跨所有容器提供诸如网络、安全和遥测等服务。于是,Kubernetes 应运而生。关于kubernetes,我们下次再说。