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

最后修改日期: 2025年5月19日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。