avatar

Wz Blog

运维学习・持续更新

  • 首页
  • 文章
  • 登录/注册
  • 管理后台
主页 Docker网络
文章

Docker网络

发表于 2026-10-11 更新于 2026-10- 11
作者 Administrator
6~8 分钟 阅读

▶ docker网络类型

• bridge(默认): #类似于虚拟机NAT网络

容器可以通过NAT访问外部网络

• host(主机网络):

容器的网络配置跟宿主机网络一模一样

• none(无网络):

▪ 容器没有配置任何网络,没有任何网络接口配置(网卡等)

▪ 用来测试,只有回环地址127.0.0.1

• overlay(覆盖网络):

用与Docker集群下的跨主机容器通信。通过VXLAN隧道技术,将不同宿主机上的容器连接到同一个虚拟网络

• macvlan: #类似于虚拟机桥接网络

▪ 为容器分配一个MAC地址,使容器直接连接到物理网络,在网络上表现为一个独立的物理设备。

▪ 容器可以被网络中的其他设备访问

• ipvlan:

与macvlan类似,但容器共享宿主机的MAC地址,使用不同的IP地址。减少MAC地址消耗

• 自定义网络:

自定义网络和默认桥接最大不同是:

可以使用容器名来跟对方通信

▶ Docker网络基础操作

• 增

▪ 创建自定义网络(指定子网):


docker network create --driver=bridge --subnet=192.169.100.0/24 mynet

▪ 将容器连接到自定义网络


docker run -d --name box1 --network=mynet busybox:latest

• 删

删除自定义网络:


docker network rm mynet

• 查

• 查看网络列表


docker network ls

• 查看网络详情


docker network inspect bridge

输出内容:包括子网、网关、连接的容器等信息

▶ 高级网络模式示例

• Host网络模式(直接使用宿主机网络)


docker run -d --network=host --name nginx-host nginx

#容器与宿主机共享网络栈(无NAT性能损耗)

适用场景:高性能需求(如负载均衡器)

• Macvlan网络(直接分配MAC地址)


docker network create -d macvlan \

--subnet=xxx.xxx.xx.x/24 \ #指定IP

--gateway=xxx.xxx.x.x \ #指定网关

-o parent=eth0 \ #指定宿主机网卡

my_macvlan #网络名

特点:容器像物理设备一样出现在局域网中

▶ 容器网络隔离与连接

• 断开/连接网络

▪ docker network disconnect bridge web #从默认网络断开

▪ docker network connect mynet web #连接到新网络

• 端口映射

▪ docker run -d -p 80 --name nginx nginx:v1

#宿主机任意端口映射到容器80端口

▪ docker port nginx

#查看实际映射的端口

▶ 网络故障排查

1.测试容器间连通性


docker exec -it box1 sh #进入容器内部
ping box2 #测试DNS解析
curl http://box2:80 #测试HTTP连接

2.抓包分析


docker run --rm --net=host nicolaka/netshoot tcpdump -i eth0 port 80

#在宿主机抓取容器流量

#nicolaka/netshoot是一个非常流行的网络调试工具镜像(网络工具箱)

内置tcpdump、ping、curl、nslookup、ss、ip等一堆排错工具

3.重置Docker网络


docker network prune #清理所有未使用的网络
systemctl restart docker #重启docker服务

▶ 网络驱动对比表

网络类型| 驱动名| 特点| 适用场景

---|---|---|---

Bridge| bridge| 默认 NAT 网络,端口映射| 单机容器通信

Host| host| 共享宿主机网络栈| 高性能场景

Macvlan| macvlan| 直接分配 MAC 地址| 容器需表现为局域网中一台独立主机

None| null| 完全无网络| 特殊隔离需求

▶ 经典问题解决方案

问题1:容器无法访问外网

1.检查DNS配置:


docker run --rm 容器名 cat /etc/resolv.conf

2.临时解决方案:运行容器时指定DNS:


docker run --dns=223.5.5.5 --rm 容器名 ping www.baidu.com

问题2:端口冲突

1.查看端口占用:


ss -tunlp #docker run运行指定的端口映射,宿主机端口可能被占用

2.修改容器映射端口:


docker run -d -p 81:80 --name nginx nginx:v1
容器与云原生
笔记 Docker
许可协议:  CC BY 4.0
分享

相关文章

10月 17, 2026

Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)

架构一句话:3 台阿里云 ECS,2 台跑 kube-apiserver + etcd 堆叠控制平面,同时在这 2 台上混部 Haproxy + Keepalived 提供 VIP 172.26.127.62:6443;第 3 台做 Worker。所有 kubelet / kubectl 一律连 V

10月 11, 2026

使用Docker方式部署Harbor镜像仓库

1.下载离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.13.1/harbor-offline-installer-v2.13.1.tgz 2.解压到/opt目录下 tar xvzf harbor-offli

10月 11, 2026

kubernetes概念

▶ k8s简介以及主要功能(优势) • k8s简介 k8s的本质是一组服务器集群,它可以在集群的每个节点上运行特定的程序,来对节点中的容器进行管理。目的是实现资源管理的自动化。 • 主要功能 ▪ 自我修复:RS deployment 一旦某一个容器崩溃,能够在1秒左右迅速启动新的容器 ▪ 弹性伸缩:

下一篇

ELK日志系统分析平台

上一篇

Dockerfile

最近更新

  • Kubernetes v1.28.2 双Master堆叠etcd + Haproxy/Keepalived 高可用部署 SOP(Docker + cri-dockerd)
  • 名词解释
  • ECS 实例反复冻结 —— 故障根因分析报告
  • 运维六大工作内容
  • 磁盘相关命令

热门标签

监控 Linux 数据库 Docker 笔记 CI/CD Kubernetes Nginx

目录

©2026 Wz Blog. 保留部分权利。

使用 Halo 主题 Chirpy