Docker 网络详细讲解

一、Docker 网络核心概述

Docker 网络是实现 容器与容器之间 、容器与宿主机之间 、容器与外部网络(互联网) 互联互通的核心组件,同时实现容器的网络隔离,保证容器网络环境的安全与独立。

二、Docker 内置默认网络

1、Bridge 网络

Docker服务默认会创建一个docker0网桥 ,它允许连接到同一网桥网络的容器进行通信,同时提供与未连接到该网桥的容器进行隔离。Docker 默认的 bridge 网络和 Linux 内核中的 docker0 网桥是对应的关系

bash 复制代码
# 方式1:默认就是bridge,可省略--network参数
docker run -d --name 容器名 镜像名
# 方式2:显式指定bridge模式(推荐规范写法)
docker run -d --name 容器名 --network bridge 镜像名

1.1 工作原理

docker容器内部也有eth0网卡,容器的eth0和docker0的weth进行连接实现同网络通信,docker0通过Linux内核实现和linux网卡进行通信从而实现访问互联网

1.2 重点概述

创建的容器在没有使用--network 参数指定要加入的 docker 网络时,默认都是加入 Docker 默认的bridge网络,并且在同一个bridge网络中容器之间可以通过ip进行直接通信;

Docker 自定义桥接网络支持通过 Docker DNS 服务进行域名解析, 可以直接使用容器名进行通信, 但是默认的 bridge 网络不支持 DNS ;

容器内部部署的服务外界访问需要使用ip+端口的形式进行访问。

2、host 网络

Docker 容器运行默认都会分配独立的 Network Namespace 隔离子系统, 但是如果基于 host 网络模式,容器将不会获得一个独立的 Network Namespace,而是和宿主机共用同一个 Network Namespace,容器将不会虚拟出自己的网卡, IP 等,而是直接使用宿主机的 IP 和端口;

连接到 host 网络的容器共享宿主机的网络栈,容器的网络配置与宿主机完全一样。我们可以通过 --network=host 指定使用 host 网络

bash 复制代码
docker run -d --name 容器名 --network host 镜像名

3、none 网络

none 模式表示容器禁用所有网络功能,容器启动后处于完全的网络隔离状态。

  • 容器不会分配任何 IP 地址,也不会挂载任何网桥
  • 容器内部只能使用 localhost(本机回环),无法访问宿主机、其他容器、外部网络
  • 应用场景:纯离线运行的容器(如本地数据处理、计算任务),无需网络交互,追求极致安全隔离
bash 复制代码
docker run -d --name 容器名 --network none 镜像名

4、Container 网络

container 模式表示当前容器共享「另一个已运行容器」的网络命名空间,两个容器共用同一个 IP 和端口集。

  • 新创建的容器不会分配独立 IP ,和被共享的容器使用同一个 IP 地址
  • 两个容器之间可以通过 localhost 直接通信,网络延迟极低
  • 注意:两个容器的端口会冲突,不能在两个容器中启动同一个端口的服务
  • 应用场景:容器解耦(如一个容器运行应用,一个容器运行日志收集,共用网络)
bash 复制代码
# 格式:--network container:被共享的容器名/容器ID
docker run -d --name 容器名 --network container:目标容器名 镜像名

三、网络常用命令

bash 复制代码
#列出所有网络
docker network ls

#创建网络
docker network create [选项] NETWORK名称
- -d, --driver: 网络驱动(常用驱动:bridge、host、none、container)
#自定义 bridge 网络天生支持容器名 DNS 解析


#删除网络
docker network rm 网络名称

#删除没有使用的网络
docker network prune

#查看网络详细信息
docker network inspect 网络名称

#将容器添加到新的网络
docker network connect 网络名称 容器名称

#将容器和指定网络断开
docker network disconnect 网络名称 容器名称
相关推荐
志栋智能6 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
中云DDoS CC防护蔡蔡6 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
Ruiery6 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
ClickHouseDB6 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
欧米欧7 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery7 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
todoitbo7 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺8 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
前端精髓8 小时前
调用大模型API
运维·服务器·microsoft
跨境小彭8 小时前
Temu 全托管模式下,SKU 利润核算的实践复盘
大数据·运维·人工智能·自动化·temu