Docker配置网桥连接
为了节省资源, 假设我们所有容器都在hadoop102主机创建和启动, 则我们必须满足下面的网络互通情况:
目前情况:
- windows系统和hadoop102互通已经完成
- 容器和hadoop102也可以互相访问
- 容器间也可以自由访问
- 容器访问windows访问不到!!!
- windows访问容器也访问不到, 但是可以通过端口映射解决.(如果端口过多, 映射不方便)
- 容器ip地址最好还是固定的
如何解决前面网络不通的情况?
让容器使用桥接模式(vmware中的桥接), 与hadoop102处于同一个网段就可以解决了. 使用pipework工具可以满足我们的需求!
一、安装pipwork和brctl工具
1.在宿主(hadoop102)上安装git(如果已经安装, 跳过该步骤)
sudo yum install -y git
2.下载pipework
git clone https://github.com/jpetazzo/pipework.git
3.把pipework脚本添加到path中
sudo cp pipework/pipework /usr/bin/
4.安装brctl工具
sudo yum install bridge-utils
二、配置网络
删除原来的容器: atguigu102和atguigu103
docker rm -f $(docker ps -aq) # 删除所有容器, 慎用!!!
- 在宿主机上实现桥接网络
我的宿主机信息:
eth0: 192.168.14.112
网关: 192.168.14.1
DNS: 114.114.114.114
在宿主机上(hadoop102)执行如下命令:
sudo brctl addbr br0; \
sudo ip link set dev br0 up; \
sudo ip addr del 192.168.14.112/24 dev eth0 ; \
sudo ip addr add 192.168.14.112/24 dev br0 ; \
sudo brctl addif br0 eth0 ; \
sudo ip route add default via 192.168.14.1 dev br0
说明:
a. sudo brctl addbr br0; 添加网桥 br0
b. sudo ip link set dev br0 up 启动网桥br0
c. sudo ip addr del 192.168.14.112/24 dev eth0 ; 给eth0去掉ip, 如果是ens33需要换成ens33
d. sudo ip addr add 192.168.14.112/24 dev br0 ; 给网桥分配ip(就使用刚才eth0去掉的ip)
e. sudo brctl addif br0 eth0 ; 把eth0 搭在br0上
f. sudo ip route add default via 192.168.14.1 dev br0 给br0添加新的路由(根据虚拟机网关自己指定)
g. 需要注意中间会断网, 所以需要放置在一条语句执行
- 创建两个容器
docker run -d --name hadoop202 centos_java8_sshd:1.0
docker run -d --name hadoop203 centos_java8_sshd:1.0
- 给两个容器添加ip,并搭在br0上
sudo pipework br0 hadoop202 192.168.14.202/24@192.168.14.1
sudo pipework br0 hadoop203 192.168.14.203/24@192.168.14.1
说明:
a. br0网桥名
b. hadoop202 容器名
c.192.168.14.202/24 容器ip 24是指的掩码
d.192.168.14.1 网关地址(根据自己的虚拟机来实际指定)
三、测试网络是否OK
进入 atguigu202
ssh root@192.168.14.202
四、最后说明
我们前面的网桥搭建方案和容器ip分配方案都是临时临时生效, 当虚拟机重启或者容器重启之后会失效, 可以放入脚本中, 统一执行.
vim /home/atguigu/bin/docker.sh
# 启动容器
docker start hadoop202
docker start hadoop203
# 搭建网桥
sudo brctl addbr br0; \
sudo ip link set dev br0 up; \
sudo ip addr del 192.168.14.112/24 dev eth0 ; \
sudo ip addr add 192.168.14.112/24 dev br0 ; \
sudo brctl addif br0 eth0 ; \
sudo ip route add default via 192.168.14.1 dev br0
sleep 5
# 给容器配置ip和网关
sudo pipework br0 hadoop202 192.168.14.202/24@192.168.14.1
sudo pipework br0 hadoop203 192.168.14.203/24@192.168.14.1