docker使用linux橋接,在主機虛擬乙個docker0
網路介面,在主機中執行命令檢視:
# list
host
bridges
$ sudo
brctl
show
bridge
name
bridge
idstp
enabled
inte***ces
docker0 8000.000000000000
no# show
docker0
ipaddress
$ sudo
ifconfig
docker0
docker0
link
encap
:ethernet
hwaddr
xx:xx
:xx:xx
:xx:xx
inet
addr
:172
.17.42
.1bcast
:0.0
.0.0
mask
:255
.255
.0.0
docker啟動乙個container時會會根據docker0
的網段劃分container的ip,docker0
是每個container的閘道器。
儘管docker在使用linux brigde會找最合適的。但是有時候我們還是需要自己規劃。
使用-b=
引數設定
# 先關閉docker
$ sudo service docker stop
# 關閉網橋docker0
# 新增自己的網橋bridge0
$ sudo ifconfig docker0 down
$ sudo brctl addbr bridge0
$ sudo ifconfig bridge0 192.168.227.1 netmask 255.255.255.0
# 向docker startup file中新增啟動自定義網橋引數
$ echo
"docker_opts=\"-b=bridge0\"" >> /etc/default/docker
# 啟動docker
$ sudo service docker start
# 檢視自定義網橋是否啟動成功,ip等配置是否正確
$ sudo ifconfig bridge0
bridge0 link encap:ethernet hwaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.227.1 bcast:192.168.227.255 mask:255.255.255.0
# 啟動container
docker run -i -t base /bin/bash
# 可以看到container ip 在網段192.168.227/24內
root@261c272cd7d5:/# ifconfig eth0
eth0 link encap:ethernet hwaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.227.5 bcast:192.168.227.255 mask:255.255.255.0
# bridge0 ip as the default gateway
# 檢視路由資訊
root@261c272cd7d5:/# route -n
kernel ip routing table
destination gateway genmask flags metric ref use iface
0.0.0.0
192.168.227.1
0.0.0.0 ug 0
00 eth0
192.168.227.0
0.0.0.0
255.255.255.0 u 0
00 eth0
# hits ctrl+p then ctrl+q to detach
# 檢視網橋資訊
$ sudo brctl show
bridge name bridge id stp enabled inte***ces
bridge0 8000.fe7c2e0faebd no vethaqi2qt
docker預設是允許container互通,通過-icc=false
關閉互通。
一旦關閉了互通,只能通過-link name:alias
命令連線指定container.
sudo docker run -d --name redis crosbymichael/redis
#將redis取別名為db
$ root@4c01db0b339c:/# env
hostname=4c01db0b339c
term=xterm
db_port=tcp:
db_port_6379_tcp=tcp:
db_port_6379_tcp_proto=tcp
db_port_6379_tcp_addr=172.17.0.8
db_port_6379_tcp_port=6379
path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
pwd=/
shlvl=1
home=/
container=lxc
_=/usr/bin/env
root@4c01db0b339c:/#
0.11版本以後,-- link redis:db
的別名,會在/etc/hosts
中生成對應的ip對映:
root@6541a75d44a0:/
# cat /etc/hosts
172.17.0.3
6541a75d44a0
172.17.0.2 db
# 檢視網橋資訊
$ sudo brctl show
bridge name bridge id stp enabled inte***ces
docker0 8000.fe7c2e0faebd no vethaqi2qt
veth***是主機與container內部eth0相連的管道。詳見ip link
和namespaces infrastructure
pipework
可以建立各種複雜的containers互通的場景。詳見here
Docker網路詳解
先關閉docker sudo service docker stop 關閉網橋docker0 新增自己的網橋bridge0 sudo ifconfig docker0 down sudo brctl addbr bridge0 sudo ifconfig bridge0 192.168.227.1 ...
docker網路詳解
1.bridge 橋接模式 預設 2.host 與宿主機共享網路 3.mynet 自定義的網路 4.none 不配置網路 5.container 容器網路連通 用的少,侷限性大 docker0是docker啟動的時候就會建立乙個docker0的網絡卡,使用的是橋接模式,預設的情況下使用的都是dock...
Docker網路詳解之Bridge
docker網路有四種模式,bridge是docker預設的配置。下面是docker官網對於bridge模式的解釋 對於docker來說,網橋模式使用乙個網橋來允許連線在同乙個網橋上的容器進行通訊,同時它使得沒有連線在同乙個網橋上的容器隔離開。bridge模式在主機上自動配置規則從而使得連線不同網橋...