docker使用macVlan进行容器间通信

macVlan

用于不同主机间的容器通信

用virtualbox安装ubuntu18.04的虚拟机

镜像下载地址:http://mirrors.163.com/ubuntu-releases/
安装gcc perl make ifconfig

sudo apt update
sudo apt install gcc perl make

然后安装增强工具

虚拟机设置网卡为桥接模式

并设置高级选项的混杂模式为全部允许,然后配置静态ip

复制虚拟机

重新生成所有网卡mac地址,配置静态ip并分别设置网卡混杂模式

junyu@mycom:~$ sudo ip link set enp0s3 promisc on
[sudo] junyu 的密码: 
junyu@mycom:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
2: enp0s3: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:64:8b:3a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.121/24 brd 192.168.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::d1f1:3794:4fa4:5411/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

在两个虚拟机中安装docker

sudo apt install docker.io
sudo gpasswd -a $USER docker
newgrp docker
docker ps

分别新建macVlan网络

docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp0s3 mynet

两台虚拟机中分别创建容器

docker run --net=mynet --ip=192.168.1.131 -itd --name=test1 tyronezhao/network-ubuntu18.04:latest bash
sudo docker run --net=mynet --ip=192.168.1.133 -itd --name=test3 tyronezhao/network-ubuntu18.04:latest bash
docker run --net=mynet --ip=192.168.1.132 -itd --name=test2 tyronezhao/network-ubuntu18.04:latest bash

启动容器测试网络

ec00f4d860f40fdcbe2dd90a4fd9b73a49c4cb53b179e30e1e9070912a34a4a8
junyu@mycom:~$ sudo docker attach ec00
root@ec00f4d860f4:/# ping 192.168.1.131
PING 192.168.1.131 (192.168.1.131): 56 data bytes
64 bytes from 192.168.1.131: icmp_seq=0 ttl=64 time=0.254 ms
64 bytes from 192.168.1.131: icmp_seq=1 ttl=64 time=0.068 ms
64 bytes from 192.168.1.131: icmp_seq=2 ttl=64 time=0.101 ms
^C--- 192.168.1.131 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.068/0.141/0.254/0.081 ms
root@ec00f4d860f4:/# ping 192.168.1.132
PING 192.168.1.132 (192.168.1.132): 56 data bytes
64 bytes from 192.168.1.132: icmp_seq=0 ttl=64 time=0.979 ms
64 bytes from 192.168.1.132: icmp_seq=1 ttl=64 time=0.891 ms
64 bytes from 192.168.1.132: icmp_seq=2 ttl=64 time=0.763 ms
^C--- 192.168.1.132 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.763/0.878/0.979/0.089 ms
root@ec00f4d860f4:/# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
6: eth0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:c0:a8:01:85 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.1.133/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

猜你喜欢

转载自blog.csdn.net/weixin_41845533/article/details/88847990