来源掘金小册docker资料
# 一、Docker 的四大组成对象
在
Docker体系里,有四个对象 (Object) 是我们不得不进行介绍的,因为几乎所有Docker以及周边生态的功能,都是围绕着它们所展开的。它们分别是:镜像 (Image)、容器 (Container)、网络 (Network)、数据卷 (Volume)…
# 1.1 镜像
所谓镜像,可以理解为一个只读的文件包,其中包含了虚拟环境运行最原始文件系统的内容
# 1.2 容器
容器就是用来隔离虚拟环境的基础设施,而在
Docker里,它也被引申为隔离出来的虚拟环境。
- 如果把镜像理解为编程中的类,那么容器就可以理解为类的实例。镜像内存放的是不可变化的东西,当以它们为基础的容器启动后,容器内也就成为了一个“活”的空间
Docker 的容器应该有三项内容组成
- 一个
Docker镜像 - 一个程序运行环境
- 一个指令集合
# 1.3 网络
在
Docker中,实现了强大的网络功能,我们不但能够十分轻松的对每个容器的网络进行配置,还能在容器间建立虚拟网络,将数个容器包裹其中,同时与其他网络环境隔离
Docker能够在容器中营造独立的域名解析环境,这使得我们可以在不修改代码和配置的前提下直接迁移容器,Docker会为我们完成新环境的网络适配。对于这个功能,我们甚至能够在不同的物理服务器间实现,让处在两台物理机上的两个 Docker 所提供的容器,加入到同一个虚拟网络中,形成完全屏蔽硬件的效果…
# 1.4 数据卷
- 除了网络之外,文件也是重要的进行数据交互的资源。在以往的虚拟机中,我们通常直接采用虚拟机的文件系统作为应用数据等文件的存储位置。然而这种方式其实并非完全安全的,当虚拟机或者容器出现问题导致文件系统无法使用时,虽然我们可以很快的通过镜像重置文件系统使得应用快速恢复运行,但是之前存放的数据也就消失了。
- 为了保证数据的独立性,我们通常会单独挂载一个文件系统来存放数据。这种操作在虚拟机中是繁琐的,因为我们不但要搞定挂载在不同宿主机中实现的方法,还要考虑挂载文件系统兼容性,虚拟操作系统配置等问题。值得庆幸的是,这些在 Docker 里都已经为我们轻松的实现了,我们只需要简单的一两个命令或参数,就能完成文件系统目录的挂载。
- 能够这么简单的实现挂载,主要还是得益于
Docker底层的 Union File System 技术。在UnionFS的加持下,除了能够从宿主操作系统中挂载目录外,还能够建立独立的目录持久存放数据,或者在容器间共享。 - 在
Docker中,通过这几种方式进行数据共享或持久化的文件或目录,我们都称为数据卷 (Volume)…
# 二、搭建运行Docker环境
# 2.1 Docker Engine 的版本
对于 Docker Engine 来说,其主要分为两个系列
- 社区版 (
CE, Community Edition ) - 企业版 (
EE, Enterprise Edition )
- 社区版 (
Docker Engine CE) 主要提供了Docker中的容器管理等基础功能,主要针对开发者和小型团队进行开发和试验。而企业版 (Docker Engine EE) 则在社区版的基础上增加了诸如容器管理、镜像管理、插件、安全等额外服务与功能,为容器的稳定运行提供了支持,适合于中大型项目的线上运行… - 社区版和企业版的另一区别就是免费与收费了。对于我们开发者来说,社区版已经提供了
Docker所有核心的功能,足够满足我们在开发、测试中的需求,所以我们直接选择使用社区版进行开发即可。在这本小册中,所有的内容也是围绕着社区版的Docker Engine展开的… - 从另外一个角度,
Docker Engine的迭代版本又会分为稳定版 (Stable release) 和预览版 (Edge release)。不论是稳定版还是预览版,它们都会以发布时的年月来命名版本号,例如如 17 年 3 月的版本,版本号就是 17.03…
Docker Engine的稳定版固定为每三个月更新一次,而预览版则每月都会更新。在预览版中可以及时掌握到最新的功能特性,不过这对于我们仅是使用Docker的开发者来说,意义并不是特别重大的,所以我还是更推荐安装更有保障的稳定版本。- 在主要版本之外,
Docker官方也以解决Bug为主要目的,不定期发布次要版本。次要版本的版本号由主要版本和发布序号组成,如:17.03.2就是对17.03版本的第二次修正…
# 2.2 Docker 的环境依赖
- 由于
Docker的容器隔离依赖于Linux内核中的相关支持,所以使用Docker首先需要确保安装机器的Linux kernel中包含Docker所需要使用的特性。以目前 Docker 官方主要维护的版本为例,我们需要使用基于Linux kernel 3.10以上版本的Linux系统来安装Docker.… - 也许
Linux kernel的版本还不够直观,下面的表格就直接展示了Docker对主流几款Linux系统版本的要求
| 操作系统 | 支持的系统版本 |
|---|---|
CentOS |
CentOS 7 |
Debian |
Debian Wheezy 7.7 (LTS) |
Debian |
Jessie 8 (LTS) |
Debian |
Stretch 9 |
Debian |
Buster 10 |
Fedora |
Fedora 26 、Fedora 27 |
Ubuntu |
Ubuntu Trusty 14.04 (LTS) |
Ubuntu |
Xenial 16.04 (LTS) |
Ubuntu |
Artful 17.10... |