跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
代码酷
搜索
搜索
中文(中国大陆)
外观
创建账号
登录
个人工具
创建账号
登录
未登录编辑者的页面
了解详情
贡献
讨论
编辑“︁
Docker高级网络配置
”︁
页面
讨论
大陆简体
阅读
编辑
编辑源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
编辑
编辑源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
您的更改会在有权核准的用户核准后向读者展示。
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
= Docker高级网络配置 = == 介绍 == Docker的网络功能允许容器之间、容器与宿主机之间以及容器与外部网络进行通信。在基础使用中,Docker默认提供了桥接网络(bridge)、主机网络(host)等简单模式。但在实际生产环境中,可能需要更复杂的网络配置,例如自定义子网、跨主机通信、网络隔离或负载均衡。本章将深入探讨Docker的高级网络配置,包括自定义网络驱动、覆盖网络(overlay)、Macvlan/IPvlan以及网络策略管理。 == Docker网络驱动概述 == Docker支持多种网络驱动,每种驱动适用于不同的场景: * '''bridge''':默认驱动,适用于单主机环境。 * '''host''':容器直接使用宿主机的网络栈,无隔离性但性能高。 * '''overlay''':用于多主机通信,常见于Swarm或Kubernetes集群。 * '''macvlan/ipvlan''':为容器分配MAC/IP地址,使其在物理网络中可见。 * '''none''':禁用所有网络。 以下命令列出所有网络驱动: <syntaxhighlight lang="bash"> docker network ls </syntaxhighlight> == 自定义桥接网络 == 默认的`bridge`网络功能有限,用户可以创建自定义桥接网络以优化DNS、子网和网关配置。 === 创建自定义桥接网络 === <syntaxhighlight lang="bash"> docker network create --driver=bridge --subnet=192.168.100.0/24 --gateway=192.168.100.1 my_bridge </syntaxhighlight> * `--subnet`:指定子网范围。 * `--gateway`:设置网关地址。 === 将容器连接到自定义网络 === <syntaxhighlight lang="bash"> docker run -d --name=web --network=my_bridge nginx </syntaxhighlight> == 覆盖网络(Overlay Network) == 覆盖网络允许跨主机的容器直接通信,是Docker Swarm的核心功能。 === 创建覆盖网络 === <syntaxhighlight lang="bash"> docker network create --driver=overlay --subnet=10.0.0.0/24 my_overlay </syntaxhighlight> === 实际案例:多主机通信 === 在Swarm集群中,服务可以通过覆盖网络跨节点通信: <syntaxhighlight lang="bash"> docker service create --name=web --network=my_overlay --replicas=3 nginx </syntaxhighlight> <mermaid> graph TD A[Swarm Manager] -->|管理| B[Worker Node 1] A -->|管理| C[Worker Node 2] B -->|my_overlay| D[Container 1] C -->|my_overlay| E[Container 2] </mermaid> == Macvlan和IPvlan == 这两种驱动允许容器直接绑定到物理网络接口,适用于需要容器表现为独立物理设备的场景。 === Macvlan配置示例 === <syntaxhighlight lang="bash"> docker network create -d macvlan \ --subnet=192.168.1.0/24 \ --gateway=192.168.1.1 \ -o parent=eth0 my_macvlan </syntaxhighlight> * `parent=eth0`:指定物理网卡。 == 网络策略与安全 == Docker支持通过网络策略限制容器间的通信: * '''端口发布''':`-p 80:80`将容器端口映射到主机。 * '''网络隔离''':自定义网络默认隔离其他网络。 * '''防火墙规则''':结合`iptables`细化控制。 === 限制容器间通信 === <syntaxhighlight lang="bash"> docker network create --internal my_private_net </syntaxhighlight> `--internal`阻止容器访问外部网络。 == 常见问题与调试 == * '''查看容器IP''':`docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web` * '''测试连通性''':`docker exec web ping 192.168.100.2` * '''日志分析''':`docker logs web` == 总结 == Docker高级网络配置提供了灵活的工具集,适用于从开发到生产的各种场景。通过自定义网络驱动、覆盖网络和精细的策略控制,用户可以构建高效、安全的容器化架构。 {{Docker学习路径结构}} [[Category:集成部署]] [[Category:Docker]] [[Category:Docker高级主题]]
摘要:
请注意,所有对代码酷的贡献均被视为依照知识共享署名-非商业性使用-相同方式共享发表(详情请见
代码酷:著作权
)。如果您不希望您的文字作品被随意编辑和分发传播,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
该页面使用的模板:
模板:.IPAddress
(
编辑
)
模板:Docker学习路径结构
(
编辑
)
模板:End
(
编辑
)
模板:Range .NetworkSettings.Networks
(
编辑
)