《docker+k8s教程》
docker默认有3中网络bridge、host、none
bridge桥接网络
docker安装成功后,会在宿主机创建一个网桥docker0,可以将网桥docker0理解为一个虚拟的交换机
运行一个nginx容器
docker run --name web -d nginx
安装bridge-utils
yum install bridge-utils
看上图,网桥docker0连接了两个端口vethe1db678、if10。
可以认为vethe1db678、if10是一对网卡,这对网卡之间可以通信,并且一端网卡插在docker0交换机中,另一端连接nginx容器,宿主机和容器就能通信。
查看容器ip docker inspect web
访问容器
curl 172.17.0.2
创建一个busybox
docker run -d --name=busybox busybox /bin/sh -c "while true; do sleep 3600;done"
docker exec -it busybox /bin/sh
在busybox中可以ping通另一个容器nginx
ping 172.17.0.2
容器间通信过程:
创建busybox后,也会再创建一对网卡vethe447c46、if14,一端插在交换机docker0上,一端连接busybox容器。
busybox的请求发送到docker0后,docker0将请求转到nginx中。
Host网络表示容器使用物理机的网络命名空间。物理机正在使用的端口,容器不能使用;容器正在使用的端口,物理机不能使用
none即没有网络,容器与宿主机、容器与容器之间无法通信。用于运行一些不需要网络的任务,比如说批处理数据。