You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Docker Engine API创建拥有NET_ADMIN权限的Docker Swarm服务

解决方案:为Docker Swarm服务添加NET_ADMIN权限

你可以通过以下两种方式实现需求:

1. 直接在ContainerSpec的CapabilityAdd中指定CAP_NET_ADMIN

虽然Docker Engine API v1.43的Swarm服务创建文档只列举了4种能力,但实际上该字段支持所有合法的Linux内核能力(需带CAP_前缀)。你可以直接在请求体的ContainerSpec.CapabilityAdd数组中添加"CAP_NET_ADMIN",示例API请求体如下:

{
  "Spec": {
    "TaskTemplate": {
      "ContainerSpec": {
        "Image": "your-iproute2-image:latest",
        "CapabilityAdd": ["CAP_NET_ADMIN"]
      },
      "RestartPolicy": {
        "Condition": "any"
      }
    },
    "Mode": {
      "Replicated": {
        "Replicas": 1
      }
    }
  }
}

这种方式是最安全的,仅授予容器所需的网络管理权限,符合最小权限原则。

2. 使用特权模式(仅建议测试环境)

如果上述方法因特殊环境限制无法生效,可以开启容器的特权模式,这会授予容器主机的所有权限(包括NET_ADMIN)。在请求体的ContainerSpec中添加"Privileged": true即可:

{
  "Spec": {
    "TaskTemplate": {
      "ContainerSpec": {
        "Image": "your-iproute2-image:latest",
        "Privileged": true
      }
    }
  }
}

注意:特权模式会带来较大的安全风险,仅在测试或可控环境中使用。

补充说明

容器创建API中的HostConfig.CapAdd与Swarm服务API中的ContainerSpec.CapabilityAdd作用一致,都是为容器添加Linux内核能力,只是Swarm服务的文档仅列举了常用能力,并非支持的全部范围。

内容的提问来源于stack exchange,提问作者Travis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 12:05:18