Docker網路詳解

2021-09-02 16:46:32 字數 3621 閱讀 6797

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 linknamespaces 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模式在主機上自動配置規則從而使得連線不同網橋...