使用特定范圍的 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/