我想在 Docker 容器中运行 Nmap 工具,但不使用默认的 root 用户帐户。我已经通过 setcap 设置了(希望)正确的功能。不幸的是,当我尝试运行它时,我只收到“不允许操作”错误。
这是我的码头文件:
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'
RUN microdnf install nmap which
RUN setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip $(which nmap)
USER 1001
CMD ["nmap", "--privileged", "-sU", "localhost"]
关于如何解决这个问题的任何想法?
这里的问题是“cap_net_admin”。
为了在容器内使用/设置此功能,容器必须使用“NET_ADMIN”功能运行。
或者简单地从您的 setcap 语句中省略“cap_net_admin”应该可以。
但是,要以您想要的方式运行 nmap,您只需要“cap_net_raw”功能。
将您的 dockerfile setcap 命令减少为: