docker联网

Docker 的网络配置是容器化技术的核心功能之一,主要通过 网络驱动(Network Drivers) 实现不同场景下的通信需求


一、Docker 网络的默认模式

1. Bridge 模式(默认):快递仓库的「内部物流网」

  • 原理
    • 默认创建一个虚拟网桥 docker0,容器通过 veth pair 连接到该网桥。
    • 容器之间通过虚拟局域网(如 172.17.0.0/16)通信,对外通过 NAT 访问外网。
  • 适用场景:单机环境下多个容器协作(如 Web + 数据库)。
  • 操作示例
    # 运行容器(默认使用桥接网络)
    docker run -d --name web nginx
    docker run -d --name mysql mysql
    
    # 查看容器 IP
    docker inspect web | grep IPAddress
    

2. Host 模式:直接使用「仓库大门」

  • 原理
    • 容器直接共享宿主机的网络命名空间,使用宿主机 IP 和端口。
    • 无隔离性,性能更高(省去 NAT 开销)。
  • 适用场景:需要高性能或直接暴露端口的场景(如负载均衡器)。
  • 操作示例
    docker run -d --network host nginx  # 直接访问宿主机 IP:80
    

3. None 模式:完全独立的「密室」

  • 原理
    • 容器只有本地回环接口 lo,无网络连接。
  • 适用场景:极端安全需求或自定义网络配置。
  • 操作示例
    docker run -d --network none alpine
    

二、自定义网络:灵活组网

1. 创建自定义桥接网络(推荐)

# 创建网络(默认驱动为 bridge)
docker network create my-net

# 运行容器并加入网络
docker run -d --name web --network my-net nginx
docker run -d --name mysql --network my-net mysql

# 容器间直接通过名称通信(DNS 自动解析)
docker exec web ping mysql

2. 覆盖网络(Overlay):跨主机的「联合仓库」

  • 原理
    • 用于 Docker Swarm 集群,允许不同物理机上的容器直接通信。
  • 操作示例
    # 创建 Overlay 网络(需 Swarm 模式)
    docker swarm init
    docker network create -d overlay swarm-net
    
    # 在集群中部署服务
    docker service create --network swarm-net --name web nginx
    

三、关键操作:端口映射与容器互联

1. 端口映射(-p):快递柜的「取件码」

# 将容器 80 端口映射到宿主机 8080
docker run -d -p 8080:80 --name web nginx

# 访问方式:宿主机IP:8080 → 容器IP:80

2. 容器互联(--link)(已过时,建议用自定义网络替代)

# 旧方法(不推荐)
docker run -d --name web --link mysql:db nginx
# 在 web 容器中可通过 `db` 主机名访问 mysql

网络模式对比

模式 性能 隔离性 适用场景
Bridge 单机多容器协作(默认选择)
Host 高性能需求,直接暴露端口
None - 最高 完全隔离或自定义网络
Overlay 跨主机集群(Swarm/Kubernetes)

总结

  • 简单场景:用默认桥接网络 + 端口映射(-p)。
  • 多容器协作:创建自定义桥接网络,通过容器名通信。
  • 跨主机集群:使用 Overlay 网络(Swarm/K8s)。
  • 高性能需求:Host 模式(牺牲隔离性)。

通过合理选择网络模式,你可以像搭积木一样自由组合容器,构建高效、安全的分布式应用。

posted @   牛马chen  阅读(10)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示