杜郎俊赏 - dujun.io

Docker 限制容器内网络带宽

要限制 Docker 容器内的网络带宽,没有原生命令支持,需要借助工具。最方便并且对原有部署改动最小的办法是创建 tc-docker 特权容器来限制其他容器的带宽。

Docker CLI

创建 tc-docker 特权容器,保持后台运行,管理其他容器的网络带宽:

docker run -d \
    --name tc-docker \
    --network host \
    --privileged \
    --restart always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /var/run/docker/netns:/var/run/docker/netns:shared \
    codyguo/tc-docker

在原有的 docker run 命令中增加 label 参数进行带宽限制。例如限制为 1Mbps:

docker run -itd \
    --label "org.label-schema.tc.enabled=1" \
    --label "org.label-schema.tc.rate=1mbps" \
    debian

docker-compose

上述限制写成 docker-compose.yml 如下:

version: '3.8'
services:
  tc-docker:
    image: codyguo/tc-docker
    network_mode: host
    privileged: true
    restart: always
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/run/docker/netns:/var/run/docker/netns:shared

  app:
    image: debian
    command: /bin/bash
    labels:
      org.label-schema.tc.enabled: "1"
      org.label-schema.tc.rate: "1mbps"
    depends_on:
      - tc-docker
    tty: true
    container_name: app

标签: 笔记
日期:2024-10-13