debian

Debian与Docker网络如何配置

小樊
39
2025-11-05 03:35:33
栏目: 智能运维

Debian系统下Docker网络配置指南

1. 安装Docker

在Debian系统上配置Docker网络前,需先安装Docker。推荐使用官方镜像仓库安装最新稳定版,避免使用docker.io(旧版):

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

安装完成后,启动Docker服务并设置开机自启:

sudo systemctl start docker
sudo systemctl enable docker

2. 查看默认网络

Docker安装后会自动创建3个默认网络,用于不同场景:

docker network ls

输出示例:

NETWORK ID     NAME      DRIVER    SCOPE
a1b2c3d4e5f6   bridge    bridge    local
f7g8h9i0j1k2   host      host      local
l3m4n5o6p7q8   none      null      local

3. 创建自定义网络

默认的bridge网络无法满足多容器复杂通信需求(如跨容器域名解析),建议创建自定义桥接网络:

docker network create --driver bridge my_bridge_network

可选参数

docker network create --driver bridge --subnet=192.168.1.0/24 --gateway=192.168.1.1 my_custom_network

4. 运行容器并连接网络

创建自定义网络后,启动容器时通过--network参数将其连接到目标网络:

docker run -d --name my_nginx --network my_bridge_network nginx

验证容器是否加入网络

docker network inspect my_bridge_network

在输出中查找Containers字段,确认容器IP和名称已列出。

5. 配置静态IP地址

若需为容器分配固定IP(避免动态分配冲突),可在运行容器时通过--ip参数指定:

docker run -d --name my_nginx --network my_custom_network --ip 192.168.1.10 nginx

注意:静态IP必须在自定义网络的子网范围内(如上述192.168.1.0/24),且不可与其他容器或主机IP冲突。

6. 配置网络别名

为容器设置网络别名(--alias),可通过别名在自定义网络内访问容器(无需记忆IP):

docker run -d --name my_nginx --network my_bridge_network --alias my_web nginx

验证别名访问:进入同一网络的另一个容器,使用pingcurl测试:

docker run -it --rm --network my_bridge_network alpine ping my_web

若能ping通,说明别名配置成功。

7. 配置Docker守护进程网络

若需修改Docker守护进程的网络参数(如DNS、监听端口),可编辑/etc/docker/daemon.json文件:

sudo nano /etc/docker/daemon.json

示例配置(添加DNS服务器、开启HTTP API):

{
  "dns": ["8.8.8.8", "8.8.4.4"],
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}

保存后重启Docker服务使配置生效:

sudo systemctl restart docker

注意:开启tcp://0.0.0.0:2375会暴露Docker API到所有网络接口,存在安全风险,建议仅在测试环境使用或通过防火墙限制访问。

8. 使用Docker Compose配置复杂网络

对于多容器应用(如Web+数据库),可使用Docker Compose简化网络配置。创建docker-compose.yml文件:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    networks:
      - my_bridge_network
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    networks:
      - my_bridge_network
networks:
  my_bridge_network:
    driver: bridge
    subnet: 192.168.2.0/24
    gateway: 192.168.2.1

启动服务

docker-compose up -d

Compose会自动创建名为my_bridge_network的自定义网络,并将webdb容器连接到该网络,实现容器间通信(如web容器可通过db:3306访问数据库)。

9. 主机网络模式(可选)

若需容器直接使用主机网络栈(如高性能应用),可使用--network host模式:

docker run -d --name my_redis --network host redis

特点

10. 验证网络连通性

进入容器内部,测试与主机、其他容器或外部网络的连通性:

# 进入容器
docker exec -it my_nginx /bin/bash
# 测试与主机通信(假设主机IP为192.168.1.100)
ping 192.168.1.100
# 测试与外部网络通信
ping 8.8.8.8
# 测试与同一网络的其他容器通信(如my_db)
ping my_db

若均能ping通,说明网络配置正常。

通过以上步骤,可在Debian系统上完成Docker网络的灵活配置,满足不同场景下的容器通信需求。

0
看了该问题的人还看了