meterian/cli使用Docker容器化的Meterian Client扫描项目中的漏洞。您无需安装Meterian Scanner客户端运行所需的任何依赖,扫描将在Docker容器内的隔离环境中进行。此Docker镜像包含Java运行时以及Meterian平台支持的所有平台所需的工具。
首先,在主机上安装Docker,并确保可以以非root用户身份使用Docker。
使用容器化Meterian Client的最简单方法是通过脚本meterian-docker(下载)。它接受Meterian PDF手册中提到的所有标准参数,用法完全相同,但不能在交互模式下使用,因此需要通过环境变量METERIAN_API_TOKEN提供有效的令牌。建议在启动脚本中设置此变量。
假设已将脚本添加到路径中,只需进入项目文件夹并运行:
meterian-docker
或者,设置环境变量METERIAN_WORKDIR指定项目文件夹路径,然后运行便捷脚本:
export METERIAN_WORKDIR=/project-folder meterian-docker
其工作方式与正常调用客户端完全相同。请注意,默认情况下,脚本会将包管理器使用的标准库缓存文件夹绑定到容器中(如下表所示),以确保执行速度与在本地机器上运行相同。如果需要,可以通过添加--unbound参数禁用此行为。
目前,此容器化版本支持以下平台:
请注意,如果不需要完整版,我们还提供平台特定镜像。
如果需要显式运行Docker,也可以执行以下命令。运行容器的基本方式如下:
PWD=your-project-folder docker run -it --rm \ --volume ${PWD}:/workspace \ --env METERIAN_API_TOKEN=your-token-here \ meterian/cli
请注意,在此情况下,工具使用的本地缓存不会被绑定。建议绑定这些文件夹,最简单的方法是使用提供的meterian-docker脚本。
如果需要手动操作,例如为Maven构建绑定Java缓存:
PWD=your-project-folder docker run -it --rm \ --volume ${PWD}:/workspace \ --env METERIAN_API_TOKEN=your-token-here \ --mount type=bind,source=${HOME}/.m2,target=/home/meterian/.m2 \ meterian/cli
在某些情况下(如dotnet),需要指定UID和GID才能正常工作,示例如下:
PWD=your-project-folder HOST_UID=`id -u` HOST_GID=`id -g` docker run -it --rm \ --volume ${PWD}:/workspace \ --env METERIAN_API_TOKEN=your-token-here \ --mount type=bind,source=${HOME}/.dotnet,target=/home/meterian/.dotnet \ --mount type=bind,source=${HOME}/.nuget,target=/home/meterian/.nuget \ --env HOST_UID=${HOST_UID} \ --env HOST_GID=${HOST_GID} \ meterian/cli
容器中的脚本由meterian用户运行,其主目录为/home/meterian。可在meterian-docker脚本源码中查看工作原理。如有任何问题,请通过支持渠道联系我们。
容器化客户端在构建时包含最新版本的客户端,且在镜像中保持不变。为确保用户始终使用最新版本,默认情况下会在检测到更新时自动更新。要禁用此行为,可设置环境变量CLIENT_AUTO_UPDATE:
export CLIENT_AUTO_UPDATE=false
.ssh和.gitconfig以允许Go下载私有模块通过将~/.ssh和Git配置绑定到Docker容器中,可允许Go下载非公开代码。以下是示例代码片段,有关此实践的更多信息,请阅读此处:
git config --global url.ssh://***/.insteadOf [***] docker run --rm \ --volume ${PWD}:/workspace \ -e METERIAN_API_TOKEN=$METERIAN_API_TOKEN \ -e GOPRIVATE=$GOPRIVATE \ --volume ${HOME}/.ssh:/home/meterian/.ssh \ --volume ${HOME}/.gitconfig:/home/meterian/.gitconfig \ meterian/cli
注意:如上所述,从Go 1.13版本开始,需要设置GOPRIVATE环境变量才能正常工作,因此需要将其暴露给容器。
要允许非root用户使用Docker,可运行以下命令:
sudo setfacl --modify user:<用户名或ID>:rw /var/run/docker.sock


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务