docker_practice/advanced_network/docker0.md
Kang HuaiShuai 5cb92f63cf
Update title style
Signed-off-by: Kang HuaiShuai <khs1994@khs1994.com>
2019-11-06 14:58:03 +08:00

38 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 配置 docker0 网桥
Docker 服务默认会创建一个 `docker0` 网桥其上有一个 `docker0` 内部接口它在内核层连通了其他的物理或虚拟网卡这就将所有容器和本地主机都放到同一个物理网络
Docker 默认指定了 `docker0` 接口 IP 地址和子网掩码让主机和容器之间可以通过网桥相互通信它还给出了 MTU接口允许接收的最大传输单元通常是 1500 Bytes或宿主主机网络路由上支持的默认值这些值都可以在服务启动的时候进行配置
* `--bip=CIDR` IP 地址加掩码格式例如 192.168.1.5/24
* `--mtu=BYTES` 覆盖默认的 Docker mtu 配置
也可以在配置文件中配置 DOCKER_OPTS然后重启服务
由于目前 Docker 网桥是 Linux 网桥用户可以使用 `brctl show` 来查看网桥和端口连接信息
```bash
$ sudo brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.3a1d7362b4ee no veth65f9
vethdda6
```
*`brctl` 命令在 DebianUbuntu 中可以使用 `sudo apt-get install bridge-utils` 来安装
每次创建一个新容器的时候Docker 从可用的地址段中选择一个空闲的 IP 地址分配给容器的 eth0 端口使用本地主机上 `docker0` 接口的 IP 作为所有容器的默认网关
```bash
$ sudo docker run -i -t --rm base /bin/bash
$ ip addr show eth0
24: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 32:6f:e0:35:57:91 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::306f:e0ff:fe35:5791/64 scope link
valid_lft forever preferred_lft forever
$ ip route
default via 172.17.42.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3
```