
Docker的网络基础
docker 网络作用
docker网络是实现容器之间通信、容器与主机间,甚至与外部通信的关键机制。
常见网络驱动
bridge #默认网络,容器间通过虚拟网桥互联,适用于单主机通信
host #宿主使用宿主机网络,不隔离端口,适用于高性能、本地测试
none #容器内无网络,仅有lookback ,适用于自定义场景
overlay #跨主机网络,基于Swarm集群,适用于分布式部署
macvlan #容器像真实主机样,加入物理网络,适用于与局域网设备通信
入门实操(bridge网络)
查看网络
docker network ls
输出:

创建自定义网络
docker network create \
–driver bridge \
–subnet=192.168.100.0/24 \
–gateway=192.168.100.1 \
my_bridge
使用网络运行容器
docker run -d –name wb1 –network my_bridge neginx
docker run -it –rm –name client –network my_bridge busybox sh
使用ping命令检验
ping web1 #这时候已经进入容器client

进阶知识点
容器 DNS 名称解析
自定义网络中,docker会自动设置容器名作为DNS名称,即容器client可以直接ping web1
多网络连接
docker network create net1
docker network create net2
docker run -d –name app network net1 nginx
docker run –rm network connect net2 app
host网络模式
docker run –rm network host nginx #容器共享主机端口和ip,不能使用-p映射
跨主机通信(Overlay 网络)
初始化 Swarm 集群
docker swarm init
创建 overlay 网络
docker network create -d overlay –attachable my_overlay
跨主机部署服务
docker service create –name web –network my_overlay nginx #适用于部署 Redis 集群、WordPress + MySQL + Redis 等分布式架构。
调试与网络管理
查看容器 IP
docker inspect -f ‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ 容器名
网络诊断
docker network inspect 网络名
docker exec -it 容器名 ping 目标容器名
连接/断开容器与网络
docker network connect 网络名 容器名
docker network disconnect 网络名 容器名
总结与实战建议
单机部署 推荐使用自定义bridge网络
性能关键容器 推荐使用host网络
内部完全隔离 推荐使用none 网络
多主机集群部署 推荐使用 Swarm 网络
接入公司主机局域网 推荐使用 macvlan
留言