首页主机资讯CentOS下Docker网络配置怎样

CentOS下Docker网络配置怎样

时间2025-10-30 11:09:04发布访客分类主机资讯浏览1167
导读:CentOS下Docker网络配置指南 一、Docker网络基础模式概述 Docker支持多种网络模式,核心模式及特点如下: Bridge模式(默认):容器通过虚拟网桥docker0连接,分配私有IP(默认172.17.0.0/16),通...

CentOS下Docker网络配置指南

一、Docker网络基础模式概述

Docker支持多种网络模式,核心模式及特点如下:

  • Bridge模式(默认):容器通过虚拟网桥docker0连接,分配私有IP(默认172.17.0.0/16),通过NAT与宿主机通信,需手动映射端口(-p参数)才能访问外网。容器间可通过IP通信,但无法通过名称直接访问(需用--link,不推荐)。
  • Host模式:容器与宿主机共享网络命名空间,直接使用宿主机IP和端口,性能最佳但隔离性差(宿主机端口冲突则容器无法启动)。
  • None模式:容器无网络配置,仅保留回环接口,用于完全隔离的场景。
  • Overlay模式:用于跨主机容器通信(需配合Docker Swarm),通过加密隧道连接多台主机的容器。
  • Macvlan/Ipvlan模式:为容器分配MAC或IP地址,使其直接接入物理网络,适合需要容器与宿主机同网段的场景。

二、常用网络配置操作

1. 查看当前网络列表

使用docker network ls命令查看Docker已有的网络,包括bridge(默认)、hostnone及自定义网络。

2. 创建自定义网络

自定义网络能提升容器管理的灵活性,推荐使用Bridge驱动(最常用):

# 创建Bridge网络(指定子网和网关)
docker network create --driver bridge --subnet 192.168.1.0/24 --gateway 192.168.1.1 my_bridge

# 创建Host网络(直接使用宿主机网络)
docker network create --driver host my_host

# 创建Overlay网络(用于Swarm集群)
docker network create --driver overlay my_overlay

自定义Bridge网络的优势:容器间可通过名称直接访问(无需--link),端口无需映射即可被同网络容器访问。

3. 连接容器到网络

  • 创建容器时指定网络
    # 连接到自定义Bridge网络
    docker run -d --network my_bridge --name my_nginx nginx
    
    # 连接到Host网络
    docker run -d --network host --name my_redis redis
    
    # 连接到Overlay网络(Swarm模式)
    docker service create --name my_service --network my_overlay nginx
    
  • 将已有容器连接到网络
    docker network connect my_bridge my_existing_container
    

4. 配置网络参数

  • 自定义Bridge网络的子网/网关:创建时通过--subnet(子网)和--gateway(网关)参数指定,如上述my_bridge示例。
  • 修改Docker守护进程默认网络:编辑/etc/docker/daemon.json文件,配置默认网桥参数(需重启Docker生效):
    {
    
      "bip": "192.168.1.1/24",          // 默认Bridge网络的IP
      "fixed-cidr": "192.168.1.0/24",   // 容器IP分配范围
      "mtu": 1500,                      // 最大传输单元
      "default-address-pools": [        // 默认地址池(用于自定义Bridge网络)
        {
    
          "base": "192.168.2.0/24",
          "size": 24
        }
    
      ]
    }
        
    
    保存后执行systemctl restart docker重启服务。

5. 查看网络详情

使用docker network inspect < 网络名称/ID> 命令查看网络的详细信息,包括连接的容器、子网、网关、IP分配情况等:

docker network inspect my_bridge

6. 删除网络

若不再需要某个网络,使用docker network rm < 网络名称> 命令删除(需确保网络中无容器连接):

docker network rm my_bridge

三、进阶:使用Docker Compose管理网络

对于复杂的多容器应用,推荐使用Docker Compose通过docker-compose.yml文件定义网络,简化部署流程:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"  # 映射宿主机8080端口到容器80端口
    networks:
      - my_bridge_network
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    networks:
      - my_bridge_network
networks:
  my_bridge_network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.0.0/16  # 自定义子网
          gateway: 172.18.0.1

启动服务:

docker-compose up -d

Compose会自动创建my_bridge_network网络,webdb容器可通过名称(如webdb)直接通信。

四、注意事项

  • 网络隔离:Host模式牺牲了网络隔离性,适合对性能要求极高的场景;Bridge模式通过NAT隔离,适合大多数单主机场景。
  • 端口映射:Bridge模式下,若需从宿主机访问容器服务,必须使用-p参数映射端口(如-p 8080:80)。
  • 自定义网络优势:优先使用自定义Bridge网络,避免依赖默认bridge网络(无法通过名称访问容器)。
  • Overlay网络:仅在Swarm集群或多主机场景下使用,需提前部署Swarm(docker swarm init)。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: CentOS下Docker网络配置怎样
本文地址: https://pptw.com/jishu/738679.html
centos虚拟机快照使用 centos虚拟机克隆技巧

游客 回复需填写必要信息