Fix issue#20, format following the guidelines

This commit is contained in:
Baohua Yang
2014-10-14 13:25:01 +08:00
parent 9d26f96ba2
commit cb903202ba
81 changed files with 682 additions and 679 deletions

View File

@@ -1,10 +1,10 @@
##映射容器端口到宿主主机的实现
## 映射容器端口到宿主主机的实现
默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。
### 容器访问外部实现
容器所有到外部网络的连接源地址都会被NAT成本地系统的IP地址。这是使用`iptables`的源地址伪装操作实现的。
容器所有到外部网络的连接源地址都会被NAT成本地系统的IP地址。这是使用 `iptables` 的源地址伪装操作实现的。
查看主机的NAT规则。
查看主机的 NAT 规则。
```
$ sudo iptables -t nat -nL
...
@@ -13,15 +13,15 @@ target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 !172.17.0.0/16
...
```
其中,上述规则将所有源地址在`172.17.0.0/16`网段目标地址为其他网段外部网络的流量动态伪装为从系统网卡发出。MASQUERADE跟传统SNAT的好处是它能动态从网卡获取地址。
其中,上述规则将所有源地址在 `172.17.0.0/16` 网段目标地址为其他网段外部网络的流量动态伪装为从系统网卡发出。MASQUERADE 跟传统 SNAT 的好处是它能动态从网卡获取地址。
### 外部访问容器实现
容器允许外部访问,可以在`docker run`时候通过`-p``-P`参数来启用。
容器允许外部访问,可以在 `docker run` 时候通过 `-p``-P` 参数来启用。
不管用那种办法,其实也是在本地的`iptable`nat表中添加相应的规则。
不管用那种办法,其实也是在本地的 `iptable`nat 表中添加相应的规则。
使用`-P`时:
使用 `-P` 时:
```
$ iptables -t nat -nL
...
@@ -30,7 +30,7 @@ target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:49153 to:172.17.0.2:80
```
使用`-p 80:80`时:
使用 `-p 80:80` 时:
```
$ iptables -t nat -nL
Chain DOCKER (2 references)
@@ -38,6 +38,6 @@ target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.2:80
```
注意:
* 这里的规则映射了0.0.0.0,意味着将接受主机来自所有接口的流量。用户可以通过`-p IP:host_port:container_port``-p
IP::port`来指定允许访问容器的主机上的IP、接口等以制定更严格的规则。
* 如果希望永久绑定到某个固定的IP地址可以在Docker 配置文件`/etc/default/docker`中指定`DOCKER_OPTS="--ip=IP_ADDRESS"`之后重启Docker服务即可生效。
* 这里的规则映射了 0.0.0.0,意味着将接受主机来自所有接口的流量。用户可以通过 `-p IP:host_port:container_port``-p
IP::port` 来指定允许访问容器的主机上的 IP、接口等以制定更严格的规则。
* 如果希望永久绑定到某个固定的 IP 地址,可以在 Docker 配置文件 `/etc/default/docker` 中指定 `DOCKER_OPTS="--ip=IP_ADDRESS"`,之后重启 Docker 服务即可生效。