理解Docker网络(Docker0)
我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0,用的是桥接模式,使用的技术是evth-pair技术。
evth-pair 就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连,实现通信。正因为有这个特性,evth-pair 充当一个桥梁,连接各种虚拟网络设备
如下图:容器1和容器2是共用的一个路由器docker0,所有的容器在不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认可用的ip
先清空当前docker的所有环境
删除所有容器:
docker rm -f $(docker ps -aq)
删除所有镜像:
docker rmi -f $(docker images -aq)
查看当前linux网络信息,命令:ip addr 可以看到有3个网卡
解释:
- lo:本机回环地址
- eth0:阿里云的内网地址
- docker0:docker帮我们生成的网卡
容器和容器之间是可以相互ping通的
自定义网络
查看当前网卡列表
docker network ls
删除某个网卡
docker network rm 网卡名
创建一个网卡:
# --driver bridge(网络默认,桥接(默认))
# --subnet 192.168.0.0/16 (子网地址)
# --gateway 192.168.0.1 (网关)
# mynet (网卡名称)
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
在同一个网卡下的容器是可以直接ping容器名的
启动容器时选择刚才创建的网卡
docker run -d -P --name 容器名 --net mynet 镜像名