一、docker原生网络
docker安装后会自动创建3种网络:bridge、host、none,docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口。
实验环境:server1中已搭建docker环境
1. 容器自动桥接到docker0接口上
yum install bridge-utils
docker network ls #查看docker中的网络
ip addr show
docker run -d nginx
brctl show #容器自动桥接到docker0接口上,关闭容器,则桥接自动关闭
2. 容器内的网络
bridge模式下容器没有一个公有ip,只有宿主机可以直接访问,外部主机是不可见的。 容器通过宿主机的NAT规则后可以访问外网。
docker ps #查看容器的进程id
docker inspect 进程id #查看该容器进程详细信息
docker stop 进程id #关闭容器进程
ping 172.17.0.2 #ping不通
docker start 进程id #开启容器进程
ping 172.27.0.2 #可以ping通
docker rm -f 进程id #删除容器
3. 指定网络模式为host
host模式可以让容器共享宿主机网络栈,这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性。
docker run -it --name vm1 --network host ubuntu
ip addr
4. 指定网络模式为none
none模式是指禁用网络功能,只有lo接口,在容器创建时使用
docker run -it --name vm2 --network none ubuntu
ip addr
二、Docker自定义网络
自定义网络模式,docker提供了三种自定义网络驱动: