Docker是目前最为流行的容器化技术之一,其提供的方便易用的环境隔离及部署方式,受到了众多开发者与运维人员的青睐。默认情况下,Docker会为容器设置一个默认的网络模式,即使用默认网桥进行连接与通讯。
docker network ls
NETWORK ID NAME DRIVER SCOPE
055da7b722dc bridge bridge local
74fb38e496fe host host local
7b733530b0a8 none null local
可以看到,docker创建了三种网络模式,即bridge、host、none,其中bridge为默认模式。
使用默认网桥的容器会自动加入到一个名为bridge的虚拟网桥中,Docker会为该虚拟网桥设置一个默认网段(172.17.0.0/16)和一个DHCP服务器,负责为容器分配IP地址。
在默认网络模式下,Docker的容器间通讯是通过NAT方式实现的,即每个容器对外只有一个IP地址,所有的流量都通过宿主机进行转发。在容器内部,它们可以通过容器名或IP地址互相访问。
docker run -d --name container1 nginx
docker run -d --name container2 nginx
docker exec -it container1 bash
curl container2 // 访问容器2
由于网络隔离,容器之间互相独立,但是他们可以通过网络互相访问。但是需要注意的是,默认网桥是不支持容器之间进行数据加密与安全认证的,因此在需要保障数据安全性的情况下,我们需要使用其他的网络方案,例如Overlay网络。
总之,使用Docker默认网桥方式,能快速搭建、开发和部署应用,适用于大多数的应用场景,但是需要注意配置容器之间的安全通讯。