docker自定义网络从入门到实践

 更新时间:2025年10月29日 09:13:14   作者:惊讶的猫  
Docker 网络模式决定了容器之间、容器与宿主机之间的通信方式,掌握网络机制是理解容器互联互通的关键,本文给大家介绍docker自定义网络从入门到实践,感兴趣的朋友跟随小编一起看看吧

Docker 网络模式决定了容器之间、容器与宿主机之间的通信方式。掌握网络机制是理解容器互联互通的关键。

一、Docker 网络的核心模式

Docker 有三种核心网络模式,决定了容器的通信方式:

桥接模式(默认 docker0 网络)

Docker 安装后会自动创建 docker0 网桥,每个容器启动时会被分配一个 docker0 网段内的 IP(如 172.17.0.x)。 容器间可通过容器 IP + 端口通信,但存在缺陷:容器重启后 IP 可能变化,且 docker0 不支持容器名直接解析为域名,导致依赖 IP 通信的方式不够稳定。

自定义网络

用户可通过 docker network create 命令创建自定义网络(如示例中的 mynet)。 自定义网络支持 “容器名 → 域名” 的稳定解析,且容器 IP 分配更可控,是生产环境中容器通信的推荐方式。

宿主模式 / 其他模式(此处暂不展开,重点关注容器间通信的核心场景)

实验

目的

我们需要启动两个 Nginx 容器(app1 和 app2),让它们通过容器名互相访问(而不是依赖 IP)

流程

1、创建自定义网络

创建自定义网络(默认是 bridge 类型,适合容器间通信)

docker network create mynet

可以通过以下命令查看网络是否创建成功

docker network ls

若输出中包含 mynet,说明创建成功。

2、启动两个 Nginx 容器并加入 mynet 网络

docker run -d \
  -p 80:80 \
  --name app1 \
  --network mynet \
  nginx
​
docker run -d \
  -p 99:80 \
  --name app2 \
  --network mynet \
  nginx
​
-p 80:80:宿主机访问 http://localhost:80 会转发到 app1 的 80 端口(Nginx 默认端口)。
-p 99:80:宿主机访问 http://localhost:99 会转发到 app2 的 80 端口。
--network mynet:关键参数,让两个容器加入同一个自定义网络,实现互通。

3、验证容器间通过 “容器名” 通信

1、进入 app1 容器内部:docker exec -it app1 bash

在容器内用 curl 访问 app2(Nginx 默认返回欢迎页):curl http://app2:80

会看到 Nginx 的默认 HTML 页面内容(说明访问成功)。

2、同理,进入 app2 容器内部:docker exec -it app2 bash

访问 app1:curl http://app1:80

同样会返回 Nginx 欢迎页,证明通信双向有效。

补充

为什么自定义网络能实现 “容器名访问”?

对比 Docker 默认的 bridge 网络(docker0):默认网络中,容器间只能通过 IP 访问,容器名无法被解析(需要手动配置 --link,但该参数已被淘汰)。

自定义网络内置了 DNS 解析服务:Docker 会在自定义网络中维护一个 “容器名 → IP” 的映射表,当容器启动、重启或 IP 变化时,这个表会自动更新,因此无论容器 IP 如何变化,都能通过容器名稳定访问。

查看网络详情

如果想确认两个容器的 IP 和网络配置,可以通过 docker network inspect mynet 查看: docker network inspect mynet 在输出的 Containers 部分,会看到 app1 和 app2 的 IP 地址(例如 172.18.0.2 和 172.18.0.3)

"Containers": {
    "app1": {
        "Name": "app1",
        "IPv4Address": "172.18.0.2/16"
    },
    "app2": {
        "Name": "app2",
        "IPv4Address": "172.18.0.3/16"
    }
}

但在日常开发中,我们无需关心这些 IP,因为 容器名即可作为固定域名使用。

环境清理(实验结束)

docker rm -f $(docker ps -aq)

若还想删除自定义网络:

docker network rm mynet

总结

网络类型是否支持容器名访问IP 是否固定典型用途
默认桥接网络(docker0)临时测试
自定义网络(bridge 类型)✅(动态可解析)推荐用于服务间通信
host / none特殊用途特殊用途性能优化或隔离

在实际项目中,无论是 MySQL + WordPress、Nginx + Redis 还是 前端 + 后端,

都推荐使用 自定义网络 来实现容器间稳定通信。

通过容器名互联,系统的可维护性与可移植性都显著提升。

一句话总结:

“自定义网络让容器之间的通信像微服务一样灵活稳定——名字不变,连接不断。”

到此这篇关于docker自定义网络的文章就介绍到这了,更多相关docker自定义网络内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Docker开发python Web 应用

    使用Docker开发python Web 应用

    本文给大家详细讲解了如何使用Docker开发python应用,特别是WEB应用的步骤,Docker本质上提供了非常轻量化的VMs,我们可以使用其创建一个高标准隔离并能大大减少失配的开发和产品环境。
    2016-10-10
  • centos6使用docker部署redis主从数据库操作示例

    centos6使用docker部署redis主从数据库操作示例

    这篇文章主要介绍了centos6使用docker部署redis主从数据库操作,结合实例形式分析了centos6环境下docker部署redis主从数据库相关命令与使用技巧,需要的朋友可以参考下
    2020-02-02
  • 使用Docker Swarm部署高可用集群的详细步骤

    使用Docker Swarm部署高可用集群的详细步骤

    Docker Swarm 是 Docker 原生的集群管理工具,可以轻松地将多个 Docker 主机组成一个集群,实现服务的高可用性和负载均衡,以下是详细的部署步骤,需要的朋友可以参考下
    2025-07-07
  • 在Docker容器中使用iptables时的最小权限的开启方法

    在Docker容器中使用iptables时的最小权限的开启方法

    这篇文章主要介绍了在Docker容器中使用iptables时的最小权限的开启方法的相关资料,需要的朋友可以参考下
    2017-01-01
  • docker unpause详解(Docker容器管理)

    docker unpause详解(Docker容器管理)

    本文概述Docker容器暂停恢复机制,重点解析dockerunpause命令功能、与重启的对比、应用场景及底层实现,强调其在资源高效利用与服务连续性中的关键作用,对docker unpause相关知识感兴趣的朋友一起看看吧
    2025-06-06
  • Docker从json-file到syslog的集中化管理实战指南

    Docker从json-file到syslog的集中化管理实战指南

    本次实战通过对比 json-file 与 syslog 两种日志驱动,演示了 Docker 容器日志的本地存储与系统日志集成方式,并成功将默认日志驱动全局配置为 syslog,实现日志集中化管理,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • Docker容器数据卷的基本操作

    Docker容器数据卷的基本操作

    为了能保存数据在docker中我们使用卷,本文主要介绍了Docker容器数据卷的基本操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Docker基础知识之Linux namespace图文详解

    Docker基础知识之Linux namespace图文详解

    这篇文章主要给大家介绍了关于Docker基础知识之Linux namespace的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • Centos Stream9安装Docker报错download.docker.com:443的原因分析与解决方法

    Centos Stream9安装Docker报错download.docker.com:443的原因分析与解决

    这篇文章主要为大家详细介绍了Centos Stream9在安装Docker时,报错download.docker.com:443的原因分析与解决方法,有需要的小伙伴可以参考下
    2025-10-10
  • Docker容器生命周期相关命令及实践详解

    Docker容器生命周期相关命令及实践详解

    Docker容器生命周期管理是Docker平台中的一项关键功能,它涉及对容器的创建、运行、监控以及销毁等各个阶段的操作,这篇文章主要介绍了Docker容器生命周期相关命令及实践详解的相关资料,需要的朋友可以参考下
    2025-11-11

最新评论