温馨提示×

如何在Debian Docker中进行网络配置

小樊
48
2025-12-28 16:50:10
栏目: 智能运维

在 Debian 上配置 Docker 网络

一 环境准备与基础检查

  • 安装并启动 Docker(Debian 常见包名为 docker.io):
    • 安装:sudo apt update && sudo apt install -y docker.io
    • 启动与开机自启:sudo systemctl start docker && sudo systemctl enable docker
  • 查看默认网络(安装后通常包含 bridge、host、none):docker network ls
  • 查看网桥与 NAT 转发(便于排障):
    • 查看网桥:brctl show(若未安装:sudo apt install -y bridge-utils
    • 查看 NAT 规则:sudo iptables -t nat -vnL
  • 说明:Docker 默认创建 docker0 网桥,常见网段为 172.17.0.1/16,容器通过 NAT 访问外部网络。

二 常用网络模式与快速示例

  • Bridge(默认):容器接入虚拟网桥,外部访问需端口映射(-p)
    • 示例:docker run -d --name web -p 8080:80 nginx
  • Host:容器直接使用宿主机网络栈,性能更高,端口无需映射
    • 示例:docker run -d --network host nginx
  • None:禁用网络,仅保留 lo
    • 示例:docker run -d --network none busybox
  • Container:与指定容器共享网络命名空间
    • 示例:docker run -d --network container:web nginx
  • 说明:Bridge 通过 docker0iptables NAT 实现通信;Host 无网络隔离;None 仅回环;Container 共享对端网络。

三 自定义桥接网络与静态 IP

  • 创建自定义桥接网络(指定子网与网关,便于规划地址):
    • 示例:docker network create --driver bridge --subnet=192.168.10.0/24 --gateway=192.168.10.1 my_bridge
  • 运行容器并指定静态 IP(必须在自定义桥接网络上,且 IP 落在子网内):
    • 示例:docker run -d --name app --network my_bridge --ip 192.168.10.10 nginx
  • 容器名直连:自定义桥接网络内置 DNS 发现,可用容器名互相访问(如 ping app)
  • 将已存在容器接入网络或新增别名:
    • 接入网络:docker network connect my_bridge existing_container
    • 添加别名:docker network connect --alias db my_bridge existing_container
  • 说明:默认的 bridge 不支持在 run 时直接指定 –ip;需先创建自定义桥接网络。

四 跨主机与物理网络接入

  • Overlay(覆盖网络,适用于多主机/Swarm):
    • 创建:docker network create --driver overlay --subnet=10.0.0.0/24 my_overlay
    • 使用(Swarm):docker service create --network my_overlay --name web nginx
  • Macvlan(容器直接接入物理网络,拥有独立 MAC/IP):
    • 创建(示例将父接口设为 eth0,按需调整):
      • docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macvlan_net
    • 运行容器(通常需与宿主机通信时加 macvlan 网关或额外路由,避免与宿主机二层隔离):
      • docker run -d --network macvlan_net --name host1 nginx
  • 说明:Overlay 用于跨主机容器通信;Macvlan 让容器像物理主机一样出现在二层网络,适合需要独立 IP/MAC 的场景。

五 守护进程配置与 Compose 示例

  • 通过 /etc/docker/daemon.json 调整网络相关参数(修改后重启 Docker):
    • 示例(设置默认网桥 IP 与 DNS):
      • {
        • “bip”: “192.168.1.1/24”,
        • “dns”: [“8.8.8.8”, “1.1.1.1”]
        • }
    • 重启:sudo systemctl restart docker
  • Docker Compose 示例(定义自定义桥接与端口映射):
    • version: ‘3.8’ services: web: image: nginx:latest ports: - “8080:80” networks: - app_net networks: app_net: driver: bridge ipam: config: - subnet: 172.20.0.0/16
  • 常用排障命令:
    • 查看网络详情:docker network inspect <网络名>
    • 查看容器网络与 IP:docker inspect <容器名>
    • 连通性测试:docker exec -it <容器名> ping <目标IP/网关>curl http://<目标>

0