github编辑

网络配置

Docker 网络概述

Docker 容器需要网络来:

  • 与外部世界通信(访问互联网、被外部访问)

  • 容器之间相互通信

  • 与宿主机通信

Docker 在安装时会自动配置网络基础设施,大多数情况下开箱即用。

默认网络架构

Docker 启动时自动创建以下网络组件:

spinner

核心组件

组件
说明

docker0

虚拟网桥,充当交换机角色

veth pair

虚拟网卡对,一端在容器内,一端连接网桥

容器 eth0

容器内的网卡

IP 地址

自动从 172.17.0.0/16 网段分配

数据流向


Docker 网络类型

查看默认网络:

网络类型
说明
适用场景

bridge

默认类型,容器连接到虚拟网桥

大多数单机场景

host

容器直接使用宿主机网络栈

需要最高网络性能时

none

禁用网络

完全隔离的容器

overlay

跨主机网络

Docker Swarm 集群

macvlan

容器拥有独立 MAC 地址

需要直接接入物理网络


用户自定义网络(推荐)

为什么要用自定义网络

默认 bridge 网络的局限:

问题
自定义网络的优势

只能用 IP 通信

支持容器名 DNS 解析

所有容器在同一网络

更好的隔离性

需要 --link(已废弃)

原生支持服务发现

创建自定义网络

使用自定义网络

容器名 DNS 解析

自定义网络自动提供 DNS 服务:


容器互联

同一网络内的容器

同一自定义网络内的容器可以直接通信:

连接到多个网络

一个容器可以连接到多个网络:


端口映射

容器默认只能在 Docker 网络内访问。要从外部访问容器,需要端口映射:

基本语法

映射方式

参数
说明
示例

-p 8080:80

指定端口映射

宿主机 8080 → 容器 80

-p 80

随机宿主机端口

随机端口 → 容器 80

-P

自动映射所有暴露端口

随机端口 → 所有 EXPOSE 端口

-p 127.0.0.1:8080:80

只绑定本地

仅本机可访问

-p 8080:80/udp

UDP 端口

UDP 协议

查看端口映射

端口映射示意图


网络隔离

不同网络之间默认隔离:

这种隔离有助于安全:前端容器无法直接访问数据库网络。


常用命令


本章小结

概念
要点

默认网络

docker0 网桥,172.17.0.0/16 网段

自定义网络

推荐使用,支持容器名 DNS 解析

端口映射

-p 宿主机端口:容器端口 暴露服务

网络隔离

不同网络默认隔离,增强安全性

--link

已废弃,使用自定义网络替代

延伸阅读

最后更新于