Skip to content

Commit cb90320

Browse files
committed
Fix issue#20, format following the guidelines
1 parent 9d26f96 commit cb90320

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+682
-679
lines changed

README.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,46 @@
11
Docker —— 从入门到实践
22
===============
33

4-
v0.2.8
4+
v0.2.9
55

6-
[Docker](docker.com)是个伟大的项目,它彻底释放了虚拟化的威力,让应用的分发、部署和管理都变得前所未有的高效和轻松!
6+
[Docker](docker.com) 是个伟大的项目,它彻底释放了虚拟化的威力,让应用的分发、部署和管理都变得前所未有的高效和轻松!
77

8-
本书既适用于具备基础Linux知识的Docker初学者,也可供希望理解原理和实现的高级用户参考。同时,书中给出的实践案例,可供在进行实际部署时借鉴。
8+
本书既适用于具备基础 Linux 知识的 Docker 初学者,也可供希望理解原理和实现的高级用户参考。同时,书中给出的实践案例,可供在进行实际部署时借鉴。
99

10-
本书源于[WaitFish](github.com/qcpm1983)的《[Docker学习手册v1.0](https://github.com/yeasy/docker_practice/raw/master/_local/docker_manual_waitfish.pdf)》内容。后来,[yeasy](github.com/yeasy)
11-
根据最新Docker版本对内容进行了修订和重写,并增加了部分内容;与WaitFish协商,将所有内容开源,采用互联网合作的方式进行创作和维护
10+
本书源于 [WaitFish](github.com/qcpm1983) 的《[Docker 学习手册 v1.0](https://github.com/yeasy/docker_practice/raw/master/_local/docker_manual_waitfish.pdf)》内容。后来,[yeasy](github.com/yeasy)
11+
根据最新 Docker 版本对内容进行了修订和重写,并增加内容;经协商将所有内容开源,采用互联网合作的方式进行维护
1212

13-
前六章为基础内容,供用户理解Docker的基本概念和操作;7~9章介绍一些高级操作;第10章给出典型的应用场景和实践案例;11~13章介绍关于Docker实现的相关技术
13+
前六章为基础内容,供用户理解 Docker 的基本概念和操作;7 ~ 9 章介绍一些高级操作;第 10 章给出典型的应用场景和实践案例;11 ~ 13 章介绍关于 Docker 实现的相关技术
1414

15-
最新版本在线阅读:[GitBook](https://www.gitbook.io/book/yeasy/docker_practice)[DockerPool](http://dockerpool.com/static/books/docker_practice/index.html)
15+
最新版本在线阅读:[GitBook](https://www.gitbook.io/book/yeasy/docker_practice)[DockerPool](http://dockerpool.com/static/books/docker_practice/index.html)
1616

17-
另外,欢迎加入DockerPool QQ群(341410255),分享Docker资源,交流Docker技术
17+
另外,欢迎加入 DockerPool QQ 群(341410255),分享 Docker 资源,交流 Docker 技术
1818

1919

20-
本书源码在Github上维护,欢迎参与: [https://github.com/yeasy/docker_practice](https://github.com/yeasy/docker_practice)
20+
本书源码在 Github 上维护,欢迎参与: [https://github.com/yeasy/docker_practice](https://github.com/yeasy/docker_practice)
2121

22-
感谢所有的[贡献者](https://github.com/yeasy/docker_practice/graphs/contributors)
22+
感谢所有的 [贡献者](https://github.com/yeasy/docker_practice/graphs/contributors)
2323

2424
## 主要版本历史
2525
* 0.3: 2014-10-TODO
2626
* 完成仓库章节;
2727
* 重写安全章节;
2828
* 修正底层实现章节的架构、名字空间、控制组、文件系统、容器格式等内容;
2929
* 添加对常见仓库和镜像的介绍;
30-
* 添加Dockerfile的介绍。
30+
* 添加 Dockerfile 的介绍;
31+
* 重新校订中英文混排格式。
3132
* 0.2: 2014-09-18
3233
* 对照官方文档重写介绍、基本概念、安装、镜像、容器、仓库、数据管理、网络等章节;
3334
* 添加底层实现章节;
3435
* 添加命令查询和资源链接章节;
3536
* 其它修正。
3637
* 0.1: 2014-09-05
37-
* 添加pdf文件内容;
38+
* 添加基本内容;
3839
* 修正错别字和表达不通顺的地方。
3940

4041

4142
## 参加步骤
42-
* 在GitHub上fork到自己的仓库,如docker_user/docker_practice,然后clone到本地,并设置用户信息。
43+
* 在 GitHub 上 `fork` 到自己的仓库,如 `docker_user/docker_practice`,然后 `clone` 到本地,并设置用户信息。
4344
```
4445
$ git clone [email protected]:docker_user/docker_practice.git
4546
$ cd docker_practice
@@ -52,7 +53,7 @@ $ #do some change on the content
5253
$ git commit -am "Fix issue #1: change helo to hello"
5354
$ git push
5455
```
55-
* 在GitHub网站上提交pull request。
56+
* 在 GitHub 网站上提交 pull request。
5657
* 定期使用项目仓库内容更新自己仓库内容。
5758
```
5859
$ git remote add upstream https://github.com/yeasy/docker_practice

SUMMARY.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Summary
22

33
* [前言](README.md)
4-
* [Docker简介](introduction/README.md)
5-
* [什么是Docker](introduction/what.md)
6-
* [为什么要用Docker](introduction/why.md)
4+
* [Docker 简介](introduction/README.md)
5+
* [什么是 Docker](introduction/what.md)
6+
* [为什么要用 Docker](introduction/why.md)
77
* [基本概念](basic_concept/README.md)
88
* [镜像](basic_concept/internal.md)
99
* [容器](basic_concept/container.md)
@@ -38,17 +38,17 @@
3838
* [容器互联](network/linking.md)
3939
* [高级网络配置](advanced_network/README.md)
4040
* [快速配置指南](advanced_network/quick_guide.md)
41-
* [配置DNS](advanced_network/dns.md)
41+
* [配置 DNS](advanced_network/dns.md)
4242
* [容器访问控制](advanced_network/access_control.md)
4343
* [端口映射实现](advanced_network/port_mapping.md)
44-
* [配置docker0](advanced_network/docker0.md)
44+
* [配置 docker0 网桥](advanced_network/docker0.md)
4545
* [自定义网桥](advanced_network/bridge.md)
4646
* [工具和示例](advanced_network/example.md)
4747
* [编辑网络配置文件](advanced_network/config_file.md)
4848
* [实例:创建一个点到点连接](advanced_network/ptp.md)
4949
* [实战案例](cases/README.md)
50-
* [使用 Supervisor来管理进程](cases/supervisor.md)
51-
* [创建tomcat/weblogic集群](cases/tomcat.md)
50+
* [使用 Supervisor 来管理进程](cases/supervisor.md)
51+
* [创建 tomcat/weblogic 集群](cases/tomcat.md)
5252
* [多台物理主机之间的容器互联](cases/container_connect.md)
5353
* [标准化开发测试和生产环境](cases/environment.md)
5454
* [安全](security/README.md)
@@ -66,7 +66,7 @@
6666
* [基本架构](underly/arch.md)
6767
* [名字空间](underly/namespace.md)
6868
* [控制组](underly/cgroups.md)
69-
* [Union文件系统](underly/ufs.md)
69+
* [Union 文件系统](underly/ufs.md)
7070
* [容器格式](underly/container_format.md)
7171
* [网络](underly/network.md)
7272
* [附录一:命令查询](appendix_command/README.md)

advanced_network/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
#高级网络配置
2-
本章将介绍Docker的一些高级网络配置和选项
1+
# 高级网络配置
2+
本章将介绍 Docker 的一些高级网络配置和选项
33

4-
当Docker启动时,会自动在主机上创建一个`docker0`虚拟网桥,实际上是Linux的一个bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
4+
当 Docker 启动时,会自动在主机上创建一个 `docker0` 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。
55

6-
同时,Docker随机分配一个本地未占用的私有网段(在[RFC1918](http://tools.ietf.org/html/rfc1918)中定义)中的一个地址给`docker0`接口。比如典型的`172.17.42.1`,掩码为`255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。
6+
同时,Docker 随机分配一个本地未占用的私有网段(在 [RFC1918](http://tools.ietf.org/html/rfc1918) 中定义)中的一个地址给 `docker0` 接口。比如典型的 `172.17.42.1`,掩码为 `255.255.0.0`。此后启动的容器内的网口也会自动分配一个同一网段(`172.17.0.0/16`)的地址。
77

8-
当创建一个Docker容器的时候,同时会创建了一对`veth pair`接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即`eth0`;另一端在本地并被挂载到`docker0`网桥,名称以`veth`开头(例如`vethAQI2QT`)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker就创建了在主机和所有容器之间一个虚拟共享网络
8+
当创建一个 Docker 容器的时候,同时会创建了一对 `veth pair` 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 `eth0`;另一端在本地并被挂载到 `docker0` 网桥,名称以 `veth` 开头(例如 `vethAQI2QT`)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络
99

10-
![Docker网络](../_images/network.png)
10+
![Docker 网络](../_images/network.png)
1111

12-
接下来的部分将介绍在一些场景中,docker所有的网络定制配置。linux的原生命令将调整、补充、甚至替换docker默认的网络配置
12+
接下来的部分将介绍在一些场景中,Docker 所有的网络定制配置。以及通过 Linux 命令来调整、补充、甚至替换 Docker 默认的网络配置

advanced_network/access_control.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
11
## 容器访问控制
2-
容器的访问控制,主要通过Linux上的`iptables`防火墙来进行管理和实现。`iptables`是Linux上默认的防火墙软件,在大部分发行版中都自带。
2+
容器的访问控制,主要通过 Linux 上的 `iptables` 防火墙来进行管理和实现。`iptables` 是 Linux 上默认的防火墙软件,在大部分发行版中都自带。
33

44
### 容器访问外部网络
5-
容器要想访问外部网络,需要本地系统的转发支持。在Linux系统中,检查转发是否打开。
5+
容器要想访问外部网络,需要本地系统的转发支持。在Linux 系统中,检查转发是否打开。
66

77
```
88
$sysctl net.ipv4.ip_forward
99
net.ipv4.ip_forward = 1
1010
```
11-
如果为0,说明没有开启转发,则需要手动打开。
11+
如果为 0,说明没有开启转发,则需要手动打开。
1212
```
1313
$sysctl -w net.ipv4.ip_forward=1
1414
```
15-
如果在启动Docker服务的时候设定`--ip-forward=true`, Docker就会自动设定系统的`ip_forward`参数为1
15+
如果在启动 Docker 服务的时候设定 `--ip-forward=true`, Docker 就会自动设定系统的 `ip_forward` 参数为 1
1616

1717
### 容器之间访问
1818
容器之间相互访问,需要两方面的支持。
19-
* 容器的网络拓扑是否已经互联。默认情况下,所有容器都会被连接到`docker0`网桥上。
20-
* 本地系统的防火墙软件 -- `iptables`是否允许通过。
19+
* 容器的网络拓扑是否已经互联。默认情况下,所有容器都会被连接到 `docker0` 网桥上。
20+
* 本地系统的防火墙软件 -- `iptables` 是否允许通过。
2121

2222
#### 访问所有端口
23-
当启动Docker服务时候,默认会添加一条转发策略到iptables的FORWARD链上。策略为通过(`ACCEPT`)还是禁止(`DROP`)取决于配置`--icc=true`(缺省值)还是`--icc=false`。当然,如果手动指定`--iptables=false`则不会添加`iptables`规则。
23+
当启动 Docker 服务时候,默认会添加一条转发策略到 iptables 的 FORWARD 链上。策略为通过(`ACCEPT`)还是禁止(`DROP`)取决于配置`--icc=true`(缺省值)还是 `--icc=false`。当然,如果手动指定 `--iptables=false` 则不会添加 `iptables` 规则。
2424

25-
可见,默认情况下,不同容器之间是允许网络相互访问的。如果为了安全考虑,可以在`/etc/default/docker`文件中配置`DOCKER_OPTS=--icc=false`来禁止它。
25+
可见,默认情况下,不同容器之间是允许网络互通的。如果为了安全考虑,可以在 `/etc/default/docker` 文件中配置 `DOCKER_OPTS=--icc=false` 来禁止它。
2626

2727
#### 访问指定端口
28-
在通过`-icc=false`关闭网络访问后,还可以通过`--link=CONTAINER_NAME:ALIAS`选项来访问容器的开放端口。
28+
在通过 `-icc=false` 关闭网络访问后,还可以通过 `--link=CONTAINER_NAME:ALIAS` 选项来访问容器的开放端口。
2929

30-
例如,在启动Docker服务时,可以同时使用`icc=false --iptables=true`2个参数来关闭允许相互的网络访问,并让Docker可以修改系统中的`iptables`规则。
30+
例如,在启动 Docker 服务时,可以同时使用 `icc=false --iptables=true` 参数来关闭允许相互的网络访问,并让 Docker 可以修改系统中的 `iptables` 规则。
3131

32-
此时,系统中的`iptables`规则可能是类似
32+
此时,系统中的 `iptables` 规则可能是类似
3333
```
3434
$ sudo iptables -nL
3535
...
@@ -39,9 +39,9 @@ DROP all -- 0.0.0.0/0 0.0.0.0/0
3939
...
4040
```
4141

42-
之后,启动容器(`docker run`)时使用`--link=CONTAINER_NAME:ALIAS`选项。docker会在`iptable`中为2个容器分别添加一条`ACCEPT`规则,允许相互访问开放的端口(取决于dockerfile中的EXPOSE行)。
42+
之后,启动容器(`docker run`)时使用 `--link=CONTAINER_NAME:ALIAS` 选项。Docker 会在 `iptable` 中为 两个容器分别添加一条 `ACCEPT` 规则,允许相互访问开放的端口(取决于 Dockerfile 中的 EXPOSE 行)。
4343

44-
当添加了`--link=CONTAINER_NAME:ALIAS`选项后,添加了`iptables`规则。
44+
当添加了 `--link=CONTAINER_NAME:ALIAS` 选项后,添加了 `iptables` 规则。
4545
```
4646
$ sudo iptables -nL
4747
...
@@ -52,4 +52,4 @@ ACCEPT tcp -- 172.17.0.3 172.17.0.2 tcp dpt:80
5252
DROP all -- 0.0.0.0/0 0.0.0.0/0
5353
```
5454

55-
注意:`--link=CONTAINER_NAME:ALIAS`中的`CONTAINER_NAME`目前必须是Docker分配的名字,或使用`--name`参数指定的名字。主机名则不会被识别。
55+
注意:`--link=CONTAINER_NAME:ALIAS` 中的 `CONTAINER_NAME` 目前必须是 Docker 分配的名字,或使用 `--name` 参数指定的名字。主机名则不会被识别。

advanced_network/bridge.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
##自定义网桥
2-
除了默认的`docker0`网桥,用户也可以指定网桥来连接各个容器。
1+
## 自定义网桥
2+
除了默认的 `docker0` 网桥,用户也可以指定网桥来连接各个容器。
33

4-
在启动Docker服务的时候,使用`-b BRIDGE``--bridge=BRIDGE`来指定使用的网桥。
4+
在启动 Docker 服务的时候,使用 `-b BRIDGE``--bridge=BRIDGE` 来指定使用的网桥。
55

66
如果服务已经运行,那需要先停止服务,并删除旧的网桥。
77
```
88
$ sudo service docker stop
99
$ sudo ip link set dev docker0 down
1010
$ sudo brctl delbr docker0
1111
```
12-
然后创建一个网桥`bridge0`
12+
然后创建一个网桥 `bridge0`
1313
```
1414
$ sudo brctl addbr bridge0
1515
$ sudo ip addr add 192.168.5.1/24 dev bridge0
@@ -23,12 +23,12 @@ $ ip addr show bridge0
2323
inet 192.168.5.1/24 scope global bridge0
2424
valid_lft forever preferred_lft forever
2525
```
26-
配置Docker服务,默认桥接到创建的网桥上。
26+
配置 Docker 服务,默认桥接到创建的网桥上。
2727
```
2828
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker
2929
$ sudo service docker start
3030
```
31-
启动Docker服务
32-
新建一个容器,可以看到它已经桥接到了`bridge0`上。
31+
启动 Docker 服务
32+
新建一个容器,可以看到它已经桥接到了 `bridge0` 上。
3333

34-
可以继续用`brctl show`命令查看桥接的信息。另外,在容器中可以使用`ip addr``ip route`命令来查看ip地址配置和路由信息
34+
可以继续用 `brctl show` 命令查看桥接的信息。另外,在容器中可以使用 `ip addr``ip route` 命令来查看 IP 地址配置和路由信息

advanced_network/config_file.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
## 编辑网络配置文件
22

3-
Docker 1.2.0开始支持在运行中的容器里编辑`/etc/hosts`, `/etc/hostname``/etc/resolve.conf`文件。
3+
Docker 1.2.0 开始支持在运行中的容器里编辑 `/etc/hosts`, `/etc/hostname``/etc/resolve.conf` 文件。
44

5-
但是这些修改是临时的,只在运行的容器中保留,容器终止或重启后并不会被保存下来。也不会被`docker commit`提交。
5+
但是这些修改是临时的,只在运行的容器中保留,容器终止或重启后并不会被保存下来。也不会被 `docker commit` 提交。

advanced_network/dns.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
##配置DNS
2-
Docker没有每个容器专门定制镜像,那么怎么自定义配置容器的主机名和dns配置呢
3-
秘诀就是它利用虚拟文件来挂载到来容器的3个相关配置文件
1+
## 配置 DNS
2+
Docker 没有每个容器专门定制镜像,那么怎么自定义配置容器的主机名和 DNS 配置呢
3+
秘诀就是它利用虚拟文件来挂载到来容器的 3 个相关配置文件
44

5-
在容器中使用mount命令可以看到挂载信息
5+
在容器中使用 mount 命令可以看到挂载信息
66
```
77
$ mount
88
...
@@ -11,19 +11,19 @@ $ mount
1111
tmpfs on /etc/resolv.conf type tmpfs ...
1212
...
1313
```
14-
这种机制可以让宿主主机DNS信息发生更新后,所有Docker容器的dns配置通过`/etc/resolv.conf`文件立刻得到更新。
14+
这种机制可以让宿主主机 DNS 信息发生更新后,所有 Docker 容器的 dns 配置通过 `/etc/resolv.conf` 文件立刻得到更新。
1515

1616
如果用户想要手动指定容器的配置,可以利用下面的选项。
1717

1818
`-h HOSTNAME or --hostname=HOSTNAME`
19-
设定容器的主机名,它会被写到容器内的`/etc/hostname``/etc/hosts`。但它在容器外部看不到,既不会在`docker ps`中显示,也不会在其他的容器的`/etc/hosts`看到。
19+
设定容器的主机名,它会被写到容器内的 `/etc/hostname``/etc/hosts`。但它在容器外部看不到,既不会在 `docker ps` 中显示,也不会在其他的容器的 `/etc/hosts` 看到。
2020

2121
`--link=CONTAINER_NAME:ALIAS`
22-
选项会在创建容器的时候,添加一个其他容器的主机名到`/etc/hosts`文件中,让新容器的进程可以使用主机名ALIAS就可以连接它
22+
选项会在创建容器的时候,添加一个其他容器的主机名到 `/etc/hosts` 文件中,让新容器的进程可以使用主机名 ALIAS 就可以连接它
2323

2424
`--dns=IP_ADDRESS`
25-
添加dns服务器到容器的`/etc/resolv.conf`中,让容器用这ip地址来解析所有不在`/etc/hosts`中的主机名。
25+
添加 DNS 服务器到容器的 `/etc/resolv.conf` 中,让容器用这个服务器来解析所有不在 `/etc/hosts` 中的主机名。
2626

2727
`--dns-search=DOMAIN`
28-
设定容器的搜索域,当设定搜索域为`.example.com`时,在搜索一个名为host的主机时,dns不仅搜索host,还会搜索`host.example.com`
29-
注意:如果没有上述最后2个选项,Docker会默认用主机上的`/etc/resolv.conf`来配置容器。
28+
设定容器的搜索域,当设定搜索域为 `.example.com` 时,在搜索一个名为 host 的主机时,DNS 不仅搜索host,还会搜索 `host.example.com`
29+
注意:如果没有上述最后 2 个选项,Docker 会默认用主机上的 `/etc/resolv.conf` 来配置容器。

0 commit comments

Comments
 (0)