Docker配置网桥连接

为了节省资源, 假设我们所有容器都在hadoop102主机创建和启动, 则我们必须满足下面的网络互通情况:

Windows 下docker 可以使用WIFI windows docker 网络_网络

目前情况:

  1. windows系统和hadoop102互通已经完成
  2. 容器和hadoop102也可以互相访问
  3. 容器间也可以自由访问
  4. 容器访问windows访问不到!!!
  5. windows访问容器也访问不到, 但是可以通过端口映射解决.(如果端口过多, 映射不方便)
  6. 容器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)   # 删除所有容器, 慎用!!!
  1. 在宿主机上实现桥接网络
    我的宿主机信息:
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. 需要注意中间会断网, 所以需要放置在一条语句执行

Windows 下docker 可以使用WIFI windows docker 网络_hadoop_02

  1. 创建两个容器
docker run -d --name hadoop202 centos_java8_sshd:1.0
	docker run -d --name hadoop203 centos_java8_sshd:1.0
  1. 给两个容器添加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

Windows 下docker 可以使用WIFI windows docker 网络_docker_03


Windows 下docker 可以使用WIFI windows docker 网络_git_04

四、最后说明

我们前面的网桥搭建方案和容器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