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

如何在Docker容器中以sudo权限运行nmap并获取MAC地址

解决方案

1. 给Docker镜像安装sudo

修改你的Dockerfile,添加sudo的安装命令,优化后的Dockerfile如下:

FROM ubuntu:22.10

RUN apt-get update -y && apt-get upgrade -y
RUN apt-get install -y wget sudo nmap
CMD /bin/bash

重新构建镜像:

DOCKER_BUILDKIT=1 docker build -t ubuntu-docker:tt .

2. 赋予容器必要的网络权限

nmap获取MAC地址需要发送ARP请求,这依赖原始套接字权限,结合macOS Docker的特性,运行容器时需添加权限参数:

docker run --network host --cap-add NET_RAW --name IoT -t -i ubuntu-docker:tt

3. 在容器内执行扫描

进入容器后,用sudo运行nmap命令:

sudo nmap -sn 10.0.0.0/24

关键说明

  • macOS的Docker运行在轻量虚拟机中,--network host实际是连接到虚拟机的网络,而非宿主机物理网络。如果需要扫描宿主机所在的真实局域网,可能需要配置macvlan网络让容器直接接入物理网卡。
  • --cap-add NET_RAW是必须项:Docker默认不会授予容器原始套接字权限,即使以root身份运行也无法发送ARP请求,必须显式添加该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:50:37