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