CentOS下Docker网络配置怎样
导读: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(默认)、host、none及自定义网络。
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网络,web和db容器可通过名称(如web、db)直接通信。
四、注意事项
- 网络隔离: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
