W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Docker 默認(rèn)的橋接網(wǎng)卡是 docker0。它只會(huì)在本機(jī)橋接所有的容器網(wǎng)卡,舉例來(lái)說(shuō)容器的虛擬網(wǎng)卡在主機(jī)上看一般叫做 veth* 而 Docker 只是把所有這些網(wǎng)卡橋接在一起,如下:
[root@opnvz ~]# brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.56847afe9799 no veth0889
veth3c7b
veth4061
在容器中看到的地址一般是像下面這樣的地址:
root@ac6474aeb31d:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
11: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 4a:7d:68:da:09:cf brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::487d:68ff:feda:9cf/64 scope link
valid_lft forever preferred_lft forever
這樣就可以把這個(gè)網(wǎng)絡(luò)看成是一個(gè)私有的網(wǎng)絡(luò),通過(guò) nat 連接外網(wǎng),如果要讓外網(wǎng)連接到容器中,就需要做端口映射,即 -p 參數(shù)。
如果在企業(yè)內(nèi)部應(yīng)用,或者做多個(gè)物理主機(jī)的集群,可能需要將多個(gè)物理主機(jī)的容器組到一個(gè)物理網(wǎng)絡(luò)中來(lái),那么就需要將這個(gè)網(wǎng)橋橋接到我們指定的網(wǎng)卡上。
主機(jī) A 和主機(jī) B 的網(wǎng)卡一都連著物理交換機(jī)的同一個(gè) vlan 101,這樣網(wǎng)橋一和網(wǎng)橋三就相當(dāng)于在同一個(gè)物理網(wǎng)絡(luò)中了,而容器一、容器三、容器四也在同一物理網(wǎng)絡(luò)中了,他們之間可以相互通信,而且可以跟同一 vlan 中的其他物理機(jī)器互聯(lián)。
下面以 ubuntu 為例創(chuàng)建多個(gè)主機(jī)的容器聯(lián)網(wǎng): 創(chuàng)建自己的網(wǎng)橋,編輯 /etc/network/interface 文件
auto br0
iface br0 inet static
address 192.168.7.31
netmask 255.255.240.0
gateway 192.168.7.254
bridge_ports em1
bridge_stp off
dns-nameservers 8.8.8.8 192.168.6.1
將 Docker 的默認(rèn)網(wǎng)橋綁定到這個(gè)新建的 br0 上面,這樣就將這臺(tái)機(jī)器上容器綁定到 em1 這個(gè)網(wǎng)卡所對(duì)應(yīng)的物理網(wǎng)絡(luò)上了。
ubuntu 修改 /etc/default/docker 文件,添加最后一行內(nèi)容
# Docker Upstart and SysVinit configuration file
# Customize location of Docker binary (especially for development testing).
#DOCKER="/usr/local/bin/docker"
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"
# This is also a handy place to tweak where Docker's temporary files go.
#export TMPDIR="/mnt/bigdrive/docker-tmp"
DOCKER_OPTS="-b=br0"
在啟動(dòng) Docker 的時(shí)候 使用 -b 參數(shù) 將容器綁定到物理網(wǎng)絡(luò)上。重啟 Docker 服務(wù)后,再進(jìn)入容器可以看到它已經(jīng)綁定到你的物理網(wǎng)絡(luò)上了。
root@ubuntudocker:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58b043aa05eb desk_hz:v1 "/startup.sh" 5 days ago Up 2 seconds 5900/tcp, 6080/tcp, 22/tcp yanlx
root@ubuntudocker:~# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.7e6e617c8d53 no em1
vethe6e5
這樣就直接把容器暴露到物理網(wǎng)絡(luò)上了,多臺(tái)物理主機(jī)的容器也可以相互聯(lián)網(wǎng)了。需要注意的是,這樣就需要自己來(lái)保證容器的網(wǎng)絡(luò)安全了。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: