鍍金池/ 教程/ Linux/ 多臺(tái)物理主機(jī)之間的容器互聯(lián)
利用數(shù)據(jù)卷容器來(lái)備份、恢復(fù)、遷移數(shù)據(jù)卷
Docker 網(wǎng)絡(luò)實(shí)現(xiàn)
實(shí)戰(zhàn) Django
YAML 模板文件
名字空間
控制組
編輯網(wǎng)絡(luò)配置文件
列出
進(jìn)入容器
Compose 命令說(shuō)明
創(chuàng)建 Tomcat/Weblogic 集群
守護(hù)態(tài)運(yùn)行
快速配置指南
其它安全特性
示例:創(chuàng)建一個(gè)點(diǎn)到點(diǎn)連接
CentOS 系列安裝 Docker
數(shù)據(jù)卷容器
鏡像
指令
創(chuàng)建鏡像
Docker 容器
創(chuàng)建鏡像
常用倉(cāng)庫(kù)
總結(jié)
什么是 Docker
存出和載入鏡像
使用
獲取鏡像
容器互聯(lián)
為什么要使用 Docker?
使用 Wordpress 入門 Fig
啟動(dòng)
容器訪問(wèn)控制
私有倉(cāng)庫(kù)
使用
基本架構(gòu)
自定義網(wǎng)橋
環(huán)境變量參考
實(shí)戰(zhàn) Rail
服務(wù)端的防護(hù)
刪除
鏡像的實(shí)現(xiàn)原理
多臺(tái)物理主機(jī)之間的容器互聯(lián)
Docker 倉(cāng)庫(kù)
簡(jiǎn)介
數(shù)據(jù)卷
命令參考
使用 Supervisor 來(lái)管理進(jìn)程
移除
基本結(jié)構(gòu)
命令查詢
終止容器
聯(lián)合文件系統(tǒng)
安裝
簡(jiǎn)介
配置 DNS
內(nèi)核能力機(jī)制
導(dǎo)出和導(dǎo)入容器
配置 docker0 網(wǎng)橋
倉(cāng)庫(kù)配置文件
內(nèi)核名字空間
標(biāo)準(zhǔn)化開發(fā)測(cè)試和生產(chǎn)環(huán)境
外部訪問(wèn)容器
fig.yml 參考
Ubuntu 系列安裝 Docker
有用資源
安裝
端口映射實(shí)現(xiàn)
安裝 Fig
工具和示例
簡(jiǎn)介
控制組
容器格式
Docker Hub

多臺(tái)物理主機(jī)之間的容器互聯(lián)

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)卡上。

拓?fù)鋱D

主機(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)。

http://wiki.jikexueyuan.com/project/docker-technology-and-combat/images/container_connect_topology.png" alt="物理拓?fù)鋱D" />

ubuntu 示例

下面以 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ò)安全了。

上一篇:指令下一篇:使用 Wordpress 入門 Fig