docker 网络
bridge模式
在docker启动后,通过ifconfig命令可以看到docker0网桥信息,docker0是Docker服务所创建的,容器和宿主机的通信,容器间的通信都需要通过docker0进行转发。容器可以从docker0的网段上获取一个自己的ip。
整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth;每个容器实例内部也有一块网卡,接口叫eth0,这样一对接口叫veth pair。
在bridge模式下,docker容器的ip可能会随着容器的重启而变更,因此一般不能在服务中将要访问的容器ip写死。
查看容器的网络情况可使用docker inspect <容器id> | tail -n 20
。
host模式
容器和宿主机共用同一ip,容器直接占用宿主机的端口,重复时会自动递增。
none模式
在none模式下,不对容器进行任何网络配置。容器没有网卡、ip、路由等信息,只有一个lo(本地链路回环地址127.0.0.1)。
container模式
新建的容器b和已经存在的一个容器a共享网络配置。当提供网络的容器a关闭后,容器b也就失去了网络配置。
自定义网络
以tomcat容器演示:
docker network create testnet
docker run -d -p 8081:8080 --network testnet --name tomcat81 rightctrl/tomcat
docker run -d -p 8082:8080 --network testnet --name tomcat82 rightctrl/tomcat
此时在进入各自的容器内,便可以通过服务名ping通容器。ping tomcat81