docker网络配置之自定义网桥

时间:2022-04-13 13:30:31

使用特定范围的 IP (仅适用于v1.x)不适用于新版的v1.1x

Docker 会尝试寻找没有被主机使用的 ip 段,尽管它适用于大多数情况下,但是它不是万能的,有时候我们还是需要对 ip 进一步规划。Docker 允许你管理 docker0 桥接或者通过-b选项自定义桥接网卡,需要安装bridge-utils软件包。

基本步骤如下:

    • ensure Docker is stopped
      • # 确保 docker 的进程是停止的
    • create your own bridge (bridge0 for example)
      • # 创建自定义网桥
    • assign a specific IP to this bridge
      • # 给网桥分配特定的 ip
    • start Docker with the -b=bridge0 parameter
      • # 以 -b 的方式指定网桥

除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器。
在启动 Docker 服务的时候,使用 -b BRIDGE 或 --bridge=BRIDGE 来指定使用的网桥。
如果服务已经运行,那需要先停止服务,并删除旧的网桥。
$ sudo service docker stop
$ sudo ip link set dev docker0 down
$ sudo brctl delbr docker0
然后创建一个网桥 bridge0 。
$ sudo brctl addbr bridge0
$ sudo ip addr add 10.0.200.1/24 dev bridge0
$ sudo ip link set dev bridge0 up
查看确认网桥创建并启动。
$ ip addr show bridge0
4: bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default
link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff
inet 10.0.200.1/24 scope global bridge0
valid_lft forever preferred_lft forever
配置 Docker 服务,默认桥接到创建的网桥上,并为
$vim /etc/sysconfig/docker

other_args='--insecure-registry 10.0.30.5:5000 --graph=/data/docker/images -b=bridge0'
$ sudo service docker start
启动 Docker 服务。 新建一个容器,可以看到它已经桥接到了 bridge0 上。
可以继续用 brctl show 命令查看桥接的信息。另外,在容器中可以使用 ip addr 和 ip route 命令来
查看 IP 地址配置和路由信息。

5.外部主机想要访问容器内IP时,需要添加静态回执路由

route add -net 10.0.200.0 netmask 255.255.255.0 gw 10.0.30.6(容器所在的宿主机IP)

------------------------------------------------------------------------------------------------------

新版的docker v1.1x.x 相关配置,不需要自己手动创建网桥

dockerd --graph=/data/docker/ &
docker network create --subnet=10.0.200.0/24 --gateway=10.0.200.1 house200   该命令会创建一个网桥
docker run -itd --network house200 --ip 10.0.200.10 --name mycentos centos:6.6 /bin/bash

参考官方文档: https://docs.docker.com/engine/tutorials/networkingcontainers/