docker network 自定义网络配置与管理指南详细过程

 更新时间:2025年05月27日 09:57:11   作者:摸鱼的后端  
Docker网络是容器间通信和与外部世界交互的基础,通过自定义网络,可以实现容器间的隔离、静态 IP 分配和服务发现,这篇文章主要介绍了docker network 自定义网络配置与管理指南,需要的朋友可以参考下

Docker 自定义网络配置与管理指南

1. 网络基础概念

Docker 网络是容器间通信和与外部世界交互的基础。通过自定义网络,可以实现容器间的隔离、静态 IP 分配和服务发现。

关键术语:

  • 子网(Subnet):IP 地址的逻辑分组,例如 172.18.0.0/16 包含 65,536 个 IP 地址
  • 网关(Gateway):子网的默认路由,通常是子网的第一个或最后一个 IP
  • CIDR 表示法:IP/前缀长度,如 172.18.0.1/16 表示前 16 位为网络位
  • 桥接网络(Bridge):Docker 默认的网络驱动,用于容器间通信

2. 创建自定义网络

创建名为 net_base 的桥接网络,指定特定的子网和网关:

docker network create \
  --driver bridge \         # 使用桥接网络驱动(默认)
  --subnet 172.18.0.0/16 \  # 指定 IP 地址范围
  --gateway 172.18.0.254 \  # 手动指定网关 IP(子网内的最后一个可用 IP)
  net_base                  # 网络名称

参数说明

  • --driver bridge:创建基于 Linux 桥接的网络
  • --subnet:定义网络的 IP 地址范围
  • --gateway:设置网关 IP(必须在子网范围内)

3. 启动容器并分配静态 IP

在自定义网络中启动容器并分配静态 IP:

docker run -d \
  --name mysql-8.0.39 \        # 容器名称
  --network net_base \         # 连接到自定义网络
  --ip 172.18.0.1 \           # 指定静态 IP 地址(网关为 0.254,因此 0.1 可用)
  -p 3306:3306 \              # 端口映射
  -e MYSQL_ROOT_PASSWORD=XXXXXX \  # 环境变量设置
  -v /etc/localtime:/etc/localtime:ro \  # 时区同步
  -v /volume/mysql_8.0.39/data:/var/lib/mysql \  # 数据持久化
  mysql:8.0.39                # 镜像名称

注意事项

  • 静态 IP 必须在子网范围内且未被使用
  • 网关已设置为 172.18.0.254,因此 0.1 可安全分配给容器
  • 静态 IP 需要在创建容器时指定,无法在运行时修改

4. 网络管理常用命令

查看网络列表

docker network ls

查看网络详细信息

docker network inspect net_base

连接现有容器到网络

docker network connect net_base <容器名或ID>

断开容器与网络的连接

docker network disconnect net_base <容器名或ID>

删除自定义网络(需先断开所有容器):

docker network rm net_base

5. 验证网络配置

检查容器 IP 地址

docker inspect -f '{{.NetworkSettings.Networks.net_base.IPAddress}}' mysql-8.0.39

从容器内部测试网络连通性

# 测试网关连通性
docker exec -it mysql-8.0.39 ping 172.18.0.254
# 测试其他容器连通性(如果有)
docker exec -it mysql-8.0.39 ping 172.18.0.3

查看容器网络配置

docker exec -it mysql-8.0.39 ip addr show eth0

6. 网络配置最佳实践

  • 为不同环境创建独立网络:开发、测试、生产环境使用不同网络
  • 合理规划 IP 地址:为每个服务预留足够的 IP 地址空间
  • 避免网关 IP 冲突:手动指定网关时,确保与容器 IP 无重叠
  • 使用网络别名简化通信
docker run -d --name web --network net_base --network-alias www nginx

其他容器可通过 www 域名访问该容器

使用 Docker Compose 管理复杂网络

version: '3'
networks:
  net_base:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16
          gateway: 172.18.0.254
services:
  mysql:
    image: mysql:8.0.39
    networks:
      net_base:
        ipv4_address: 172.18.0.1

7. 故障排查

容器无法访问外网

  • 检查网关 IP 是否正确配置
  • 确认宿主机防火墙允许容器网络流量

容器间无法通信

  • 检查容器是否连接到同一网络
  • 确认 IP 地址分配无冲突
  • 使用 docker network inspect 检查网络配置

静态 IP 分配失败

  • 确保指定的 IP 在子网范围内
  • 使用 docker network inspect 查看已分配的 IP

通过合理使用自定义网络和静态 IP 分配,可以构建出结构清晰、易于管理的容器网络环境。

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

相关文章

  • 在Docker中使用Redis的步骤详解

    在Docker中使用Redis的步骤详解

    这篇文章主要给大家介绍了关于如何在Docker中使用Redis的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-08-08
  • Docker 安装Tomcat、实现Tomcat集群的详细过程

    Docker 安装Tomcat、实现Tomcat集群的详细过程

    这篇文章主要介绍了Docker安装Tomcat、实现Tomcat集群,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Docker容器连接实现步骤解析

    Docker容器连接实现步骤解析

    这篇文章主要介绍了Docker容器连接实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 浅析docker-compose部署mysql无法访问的问题

    浅析docker-compose部署mysql无法访问的问题

    Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。接下来通过本文给大家分享docker-compose部署mysql无法访问的问题,需要的朋友参考下吧
    2018-10-10
  • Docker desktop安装mysql过程

    Docker desktop安装mysql过程

    文章介绍了如何在本地已有的Docker环境中拉取并启动MySQL容器,并详细说明了常用的环境变量参数,此外,还讨论了如何通过挂接本地磁盘来持久化MySQL数据,从而避免数据丢失
    2024-12-12
  • docker容器/etc/hosts文件修改方法

    docker容器/etc/hosts文件修改方法

    在容器内部,当需要访问其他容器或主机时,可以通过/etc/hosts文件来解析主机名,从而实现网络通信,这篇文章主要介绍了docker容器/etc/hosts文件,需要的朋友可以参考下
    2023-06-06
  • Docker容器实现SSH远程直连

    Docker容器实现SSH远程直连

    在某些特殊需求下,我们想ssh直接远程连接docker 容器,本文主要介绍了Docker容器实现SSH远程直连,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Docker基础教程之Dockerfile语法详解

    Docker基础教程之Dockerfile语法详解

    这篇文章主要给大家介绍了关于Docker基础教程之Dockerfile语法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Docker安装ClickHouse并初始化数据测试

    Docker安装ClickHouse并初始化数据测试

    clickhouse作为现在流行的数据分析数据库,非常热门,docker如何安装ClickHouse,很多朋友并不是很明白,今天小编抽空给大家分享一篇教程关于Docker安装ClickHouse并初始化数据测试的问题,一起看看吧
    2021-06-06
  • 一文教你彻底解决Docker日志膨胀

    一文教你彻底解决Docker日志膨胀

    这篇文章主要为大家详细介绍了如何快速检查,清理 Docker 日志,并设置日志大小限制以防止未来日志失控,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-05-05

最新评论