diff --git a/contribute.md b/contribute.md index b6c5252..80f2f78 100644 --- a/contribute.md +++ b/contribute.md @@ -28,3 +28,6 @@ $ git push -f origin master ``` +## 排版规范 + +本开源书籍遵循 [中文排版指南](https://github.com/mzlogin/chinese-copywriting-guidelines) 规范。 diff --git a/image/pull.md b/image/pull.md index 9cb53f5..d21af58 100644 --- a/image/pull.md +++ b/image/pull.md @@ -33,7 +33,7 @@ Status: Downloaded newer image for ubuntu:14.04 在实验上面命令的时候,你可能会发现,你所看到的层 ID 以及 `sha256` 的摘要和这里的不一样。这是因为官方镜像是一直在维护的,有任何新的 bug,或者版本更新,都会进行修复再以原来的标签发布,这样可以确保任何使用这个标签的用户可以获得更安全、更稳定的镜像。 -*如果从 Docker Hub 下载镜像非常缓慢,可以参照后面的章节配置加速器。* +*如果从 Docker Hub 下载镜像非常缓慢,可以参照 [镜像加速器](/install/mirror.html) 一节配置加速器。* ### 运行 diff --git a/install/README.md b/install/README.md index 6f79057..9b32506 100644 --- a/install/README.md +++ b/install/README.md @@ -1,16 +1,16 @@ # 安装 Docker -Docker 在 1.13 版本之后,从 2017 年的 3 月 1 号开始,版本命名规则变为如下: +Docker 在 1.13 版本之后,从 2017 年的 3 月 1 日开始,版本命名规则变为如下: | 项目 | 说明 | | -- | -- | | 版本格式 | YY.MM | | stable 版本 | 每个季度发行 | | edge 版本 | 每个月发行 | -| 当前 CE 版本 | 17.07.0-ce | +| 当前 Docker CE 版本 | 17.07.0 | -同时 Docker 划分为 CE 和 EE 。CE 版本即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使用。 +同时 Docker 划分为 CE 和 EE。CE 版本即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使用。 -Docker CE 每月发布一个 edge 版本(17.03, 17.04, 17.05...),每三个月发布一个 stable 版本(17.03, 17.06, 17.09...),Docker EE 和 stable 版本号保持一致,但每个版本提供一年维护。 +Docker CE 每月发布一个 edge 版本 (17.03, 17.04, 17.05...),每三个月发布一个 stable 版本 (17.03, 17.06, 17.09...),Docker EE 和 stable 版本号保持一致,但每个版本提供一年维护。 官方网站上有各种环境下的 [安装指南](https://docs.docker.com/engine/installation/),这里主要介绍 Docker CE 在 Linux 、Windows 10 (PC) 和 macOS 上的安装。 diff --git a/install/centos.md b/install/centos.md index b70436b..c4eb13d 100644 --- a/install/centos.md +++ b/install/centos.md @@ -1,10 +1,12 @@ -## CentOS 操作系统安装 Docker CE +## CentOS 安装 Docker CE -### 系统要求 +### 准备工作 + +#### 系统要求 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 `overlay2` 存储层驱动)无法使用,并且部分功能可能不太稳定。 -### 卸载旧版本 +#### 卸载旧版本 旧版本的 Docker 称为 `docker` 或者 `docker-engine`,使用以下命令卸载旧版本: @@ -14,33 +16,8 @@ $ sudo yum remove docker \ docker-selinux \ docker-engine ``` -### 使用 yum 源安装 -#### 添加内核参数 - -默认配置下,在 CentOS 使用 Docker CE 可能会看到下面的这些警告信息: - -```bash -WARNING: bridge-nf-call-iptables is disabled -WARNING: bridge-nf-call-ip6tables is disabled -``` - -添加内核配置参数以启用这些功能。 - -```bash -$ sudo tee -a /etc/sysctl.conf <<-EOF -net.bridge.bridge-nf-call-ip6tables = 1 -net.bridge.bridge-nf-call-iptables = 1 -EOF -``` - -然后重新加载 `sysctl.conf` 即可 - -```bash -$ sudo sysctl -p -``` - -#### 添加 yum 源 +### 使用 yum 源 安装 执行以下命令安装依赖包: @@ -48,7 +25,9 @@ $ sudo sysctl -p $ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 ``` -##### 国内源 +鉴于国内网络问题,强烈建议使用国内源,下面先介绍国内源的使用。 + +#### 国内源 执行下面的命令添加 `yum` 软件源: @@ -58,7 +37,9 @@ $ sudo yum-config-manager \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` -##### 官方源 +>以上命令会添加稳定版本的 Docker CE yum 源。从 Docker 17.06 开始,edge test 版本的 yum 源也会包含稳定版本的 Docker CE。 + +#### 官方源 ```bash $ sudo yum-config-manager \ @@ -66,8 +47,6 @@ $ sudo yum-config-manager \ https://download.docker.com/linux/centos/docker-ce.repo ``` ->以上命令会添加 稳定 版本的 Docker CE APT 镜像源 。从 Docker 17.06 开始,edge test 版本的 APT 镜像源也会包含稳定版本的 Docker CE - 如果需要最新版本的 Docker CE 请使用以下命令: ```bash @@ -125,6 +104,30 @@ $ sudo usermod -aG docker $USER 鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,强烈建议安装 Docker 之后配置 [国内镜像加速](/install/mirror.html)。 +### 添加内核参数 + +默认配置下,如果在 CentOS 使用 Docker CE 看到下面的这些警告信息: + +```bash +WARNING: bridge-nf-call-iptables is disabled +WARNING: bridge-nf-call-ip6tables is disabled +``` + +请添加内核配置参数以启用这些功能。 + +```bash +$ sudo tee -a /etc/sysctl.conf <<-EOF +net.bridge.bridge-nf-call-ip6tables = 1 +net.bridge.bridge-nf-call-iptables = 1 +EOF +``` + +然后重新加载 `sysctl.conf` 即可 + +```bash +$ sudo sysctl -p +``` + ### 参考文档 * [Docker 官方 CentOS 安装文档](https://docs.docker.com/engine/installation/linux/docker-ce/centos/)。 diff --git a/install/debian.md b/install/debian.md index 3a94b87..2d9a54f 100644 --- a/install/debian.md +++ b/install/debian.md @@ -6,9 +6,9 @@ Docker CE 支持以下版本的 [Debian](https://www.debian.org/intro/about) 操作系统: -* Debian 9 Stretch -* Debian 8 Jessie -* Debian 7 Wheezy +* Stretch 9 +* Jessie 8 (LTS) +* Wheezy 7.7 (LTS) Docker CE 可以安装在 64 位的 x86 平台或 ARM 平台上(如[树莓派](https://www.raspberrypi.org/))。 @@ -25,7 +25,7 @@ $ sudo apt-get remove docker docker-engine docker.io Debian 7 的内核默认为 3.2,为了满足 Docker CE 的需求,应该安装 [`backports`](https://backports.debian.org/Instructions/) 的内核。 -### 使用 APT 源安装 +### 使用 APT 镜像源 安装 由于官方源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。 @@ -76,7 +76,7 @@ $ sudo add-apt-repository \ stable" ``` ->以上命令会添加 稳定 版本的 Docker CE APT 镜像源,如果需要最新版本的 Docker CE 请将 stable 改为 edge 或者 test 。从 Docker 17.06 开始,edge test 版本的 APT 镜像源也会包含稳定版本的 Docker CE +>以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要最新版本的 Docker CE 请将 stable 改为 edge 或者 test。从 Docker 17.06 开始,edge test 版本的 APT 镜像源也会包含稳定版本的 Docker CE。 #### 官方源 diff --git a/install/mac.md b/install/mac.md index c5ce3cb..b67466f 100644 --- a/install/mac.md +++ b/install/mac.md @@ -1,4 +1,4 @@ -## macOS 操作系统安装 Docker +## macOS 安装 Docker ### 系统要求 diff --git a/install/mirror.md b/install/mirror.md index dcdf978..a95cb32 100644 --- a/install/mirror.md +++ b/install/mirror.md @@ -1,11 +1,10 @@ -## 镜像加速器 +## 镜像加速器 国内访问 Docker Hub 有时会遇到困难,此时可以配置镜像加速器。Docker官方和国内很多云服务商都提供了加速器服务,例如: * [Docker 官方提供的中国registry mirror](https://docs.docker.com/registry/recipes/mirror/#use-case-the-china-registry-mirror) * [阿里云加速器](https://cr.console.aliyun.com/#/accelerator) * [DaoCloud 加速器](https://www.daocloud.io/mirror#accelerator-doc) -* [灵雀云加速器](http://docs.alauda.cn/feature/accelerator.html) 注册用户并且申请加速器,会获得如 `https://jxus37ad.mirror.aliyuncs.com` 这样的地址。我们需要将其配置给 Docker 引擎。 @@ -58,17 +57,6 @@ $ sudo systemctl restart docker 对于macOS的用户,如果你使用的是**Docker for Mac**,那配置起来很简单。在任务栏点击应用图标 -> Perferences... -> Daemon -> Registry mirrors。在列表中添加云服务商提供的加速器地址即可。修改完成之后,点击`Apply & Restart`按钮,Docker就会重启并应用配置的镜像地址了。 -如果你使用的是**Docker Toolbox**。先看看你的系统版本,如果是macOS 10.1以上的,那么请改用Docker for Mac,这个在性能上超过Docker Toolbox一大截,具体可以看看官网的这篇文章:[Docker for Mac vs. Docker Toolbox](https://docs.docker.com/docker-for-mac/docker-toolbox/)。如果系统版本没达到,或者因为历史原因必须使用Docker Toolbox的话。 - -```bash -docker-machine ssh default -sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile -exit -docker-machine restart default -``` - -关于Docker Toolbox配置的内容参考自DaoCloud的文档:[Docker 加速器](http://guide.daocloud.io/dcs/daocloud-9153151.html#docker-toolbox) - ### 检查加速器是否生效 Linux系统下配置完加速器需要检查是否生效,在命令行执行 `ps -ef | grep dockerd`,如果从结果中看到了配置的 `--registry-mirror` 参数说明配置成功。 diff --git a/install/ubuntu.md b/install/ubuntu.md index 0b56af0..b5bcde9 100644 --- a/install/ubuntu.md +++ b/install/ubuntu.md @@ -7,8 +7,8 @@ Docker CE 支持以下版本的 [Ubuntu](https://www.ubuntu.com/server) 操作系统: * Zesty 17.04 -* Ubuntu Xenial 16.04 (LTS) -* Ubuntu Trusty 14.04 (LTS) +* Xenial 16.04 (LTS) +* Trusty 14.04 (LTS) Docker CE 可以安装在 64 位的 x86 平台或 ARM 平台上。Ubuntu 发行版中,LTS(Long-Term-Support)长期支持版本,会获得 5 年的升级维护支持,这样的版本会更稳定,因此在生产环境中推荐使用 LTS 版本。 @@ -23,7 +23,7 @@ $ sudo apt-get remove docker docker-engine docker.io #### Ubuntu 14.04 可选内核模块 -从 Ubuntu 14.04 开始,一部分内核模块移到了可选内核模块包(`linux-image-extra-*`),以减少内核软件包的体积。正常安装的系统应该会包含可选内核模块包,而一些裁剪后的系统可能会将其精简掉。`AUFS` 内核驱动属于可选内核模块的一部分,作为推荐的 Docker 存储层驱动,一般建议安装可选内核模块包以使用 `AUFS`。 +从 Ubuntu 14.04 开始,一部分内核模块移到了可选内核模块包 (`linux-image-extra-*`) ,以减少内核软件包的体积。正常安装的系统应该会包含可选内核模块包,而一些裁剪后的系统可能会将其精简掉。`AUFS` 内核驱动属于可选内核模块的一部分,作为推荐的 Docker 存储层驱动,一般建议安装可选内核模块包以使用 `AUFS`。 如果系统没有安装可选内核模块的话,可以执行下面的命令来安装可选内核模块包: @@ -68,7 +68,7 @@ $ sudo add-apt-repository \ stable" ``` ->以上命令会添加 稳定 版本的 Docker CE APT 镜像源,如果需要最新版本的 Docker CE 请将 stable 改为 edge 或者 test 。从 Docker 17.06 开始,edge test 版本的 APT 镜像源也会包含稳定版本的 Docker +>以上命令会添加稳定版本的 Docker CE APT 镜像源,如果需要最新版本的 Docker CE 请将 stable 改为 edge 或者 test。从 Docker 17.06 开始,edge test 版本的 APT 镜像源也会包含稳定版本的 Docker。 #### 官方源 diff --git a/install/windows.md b/install/windows.md index a2a7cb4..dd6036f 100644 --- a/install/windows.md +++ b/install/windows.md @@ -2,7 +2,7 @@ ### 系统要求 -Docker CE 支持 64 位版本的 Windows 10 Pro ,且必须开启 Hyper-V。 +Docker CE 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V。 ### 安装 diff --git a/introduction/what.md b/introduction/what.md index 78a07ae..18a7553 100644 --- a/introduction/what.md +++ b/introduction/what.md @@ -1,10 +1,10 @@ ## 什么是 Docker -Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 [2013 年 3 月以 Apache 2.0 授权协议开源](https://en.wikipedia.org/wiki/Docker_(software)),主要项目代码在 [GitHub](https://github.com/docker/docker) 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动[开放容器联盟](https://www.opencontainers.org/)。 +Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 [2013 年 3 月以 Apache 2.0 授权协议开源][docker-soft],主要项目代码在 [GitHub](https://github.com/docker/docker) 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 [开放容器联盟](https://www.opencontainers.org/)。 Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 3 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,[dotCloud 公司决定改名为 Docker](https://blog.docker.com/2013/10/dotcloud-is-becoming-docker-inc/)。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。 -Docker 使用 Google 公司推出的 [Go 语言](https://golang.org/) 进行开发实现,基于 Linux 内核的 [cgroup](https://zh.wikipedia.org/wiki/Cgroups),[namespace](https://en.wikipedia.org/wiki/Linux_namespaces),以及 [AUFS](https://en.wikipedia.org/wiki/Aufs) 类的 [Union FS](https://en.wikipedia.org/wiki/Union_mount) 等技术,对进程进行封装隔离,属于[操作系统层面的虚拟化技术](https://en.wikipedia.org/wiki/Operating-system-level_virtualization)。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 [LXC](https://linuxcontainers.org/lxc/introduction/),从 0.7 以后开始去除 LXC,转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer),从 1.11 开始,则进一步演进为使用 [runC](http://runc.io/) 和 [containerd](https://containerd.tools/)。 +Docker 使用 Google 公司推出的 [Go 语言](https://golang.org/) 进行开发实现,基于 Linux 内核的 [cgroup](https://zh.wikipedia.org/wiki/Cgroups),[namespace](https://en.wikipedia.org/wiki/Linux_namespaces),以及 [AUFS](https://en.wikipedia.org/wiki/Aufs) 类的 [Union FS](https://en.wikipedia.org/wiki/Union_mount) 等技术,对进程进行封装隔离,属于 [操作系统层面的虚拟化技术](https://en.wikipedia.org/wiki/Operating-system-level_virtualization)。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 [LXC](https://linuxcontainers.org/lxc/introduction/),从 0.7 以后开始去除 LXC,转而使用自行开发的 [libcontainer](https://github.com/docker/libcontainer),从 1.11 开始,则进一步演进为使用 [runC](http://runc.io/) 和 [containerd](https://containerd.tools/)。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 @@ -13,3 +13,7 @@ Docker 在容器的基础上,进行了进一步的封装,从文件系统、 ![传统虚拟化](_images/virtualization.png) ![Docker](_images/docker.png) + + + +[docker-soft]:https://en.wikipedia.org/wiki/Docker_(software) diff --git a/introduction/why.md b/introduction/why.md index 594f20c..01f03e5 100644 --- a/introduction/why.md +++ b/introduction/why.md @@ -12,7 +12,7 @@ ### 一致的运行环境 -开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 *“这段代码在我机器上没问题啊”* 这类问题。 +开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 *「这段代码在我机器上没问题啊」* 这类问题。 ### 持续交付和部署 diff --git a/kubernetes/concepts.md b/kubernetes/concepts.md index 4f1b5e4..ad00937 100644 --- a/kubernetes/concepts.md +++ b/kubernetes/concepts.md @@ -126,7 +126,7 @@ Kubernetes校验节点可用依赖于id。在当前的版本中,有两个接 ### 容器组生命周期 -通常来说,如果容器组被创建了就不会自动销毁,除非被某种行为出发,而触发此种情况可能是人为,或者复制控制器所为。唯一例外的是容器组由 succeeded状态成功退出,或者在一定时间内重试多次依然失败。 +通常来说,如果容器组被创建了就不会自动销毁,除非被某种行为触发,而触发此种情况可能是人为,或者复制控制器所为。唯一例外的是容器组由 succeeded状态成功退出,或者在一定时间内重试多次依然失败。 如果某个节点死掉或者不能连接,那么节点控制器将会标记其上的容器组的状态为 `failed`。