本文档介绍了如何使用 Docker 容器部署和使用 Sherlock。Docker 提供了一个隔离、一致的环境来运行 Sherlock,无需担心依赖项或系统兼容性问题。有关传统的软件包安装方法,请参阅软件包安装,有关详细的命令行选项,请参阅命令行界面。
Sherlock 提供了一个官方 Docker 镜像,允许您在不直接安装到系统的情况下运行该工具。Docker 部署将 Sherlock 应用程序及其所有依赖项打包到容器化环境中。
Sherlock Docker 镜像采用多阶段构建过程构建。它从 PyPI 安装官方 Sherlock Python 包并设置执行环境。
来源:Dockerfile7-31 .dockerignore1-8
要使用 Sherlock Docker 镜像,您需要:
您也可以指定版本标签而不是 latest 来使用特定版本的 Sherlock。
为所有支持的站点搜索用户名
所有常规 Sherlock 命令行选项都可以传递给 Docker 容器。例如:
有关可用选项的完整列表,请参阅命令行界面。
下图说明了在 Docker 容器中运行 Sherlock 时的执行流程
要持久化容器运行之间的数据,您可以挂载卷。
| 目的 | Docker 命令 |
|---|---|
| 保存文本结果 | -v "$(pwd)/output:/sherlock/output" |
| 保存 CSV 结果 | -v "$(pwd)/output:/sherlock/output" --csv /sherlock/output/results.csv |
| 自定义站点配置 | -v "$(pwd)/custom_data.json:/sherlock/custom_data.json" |
Docker 镜像将 SHERLOCK_ENV=docker 环境变量设置为指示它在 Docker 环境中运行。
来源:Dockerfile19
对于重复使用或更复杂的设置,您可以使用 Docker Compose。创建一个 docker-compose.yml 文件。
然后运行
从 Docker 容器运行大型搜索时,您可能会遇到社交媒体平台的速率限制。您可以使用 --timeout 和 --rate-limit 选项来管理此问题。
如果您需要自定义 Sherlock Docker 镜像,可以构建自己的镜像。
官方 Dockerfile 使用
| 问题 | 可能解决方案 |
|---|---|
| 挂载卷的权限问题 | 使用 --user $(id -u):$(id -g) 运行 |
| 网络连接 | 检查您的防火墙和代理设置 |
| 限流 | 使用 --timeout 和 --rate-limit 选项 |
| 容器退出且无结果 | 添加 --verbose 标志以获取更多信息 |
要验证您的 Sherlock Docker 镜像的版本和详细信息
在使用 Docker 运行 Sherlock 时
--user 标志来降低权限Sherlock Docker 镜像遵循与 Sherlock 软件包相同的版本控制。镜像标签与软件包版本匹配,latest 指向最新的发布版本。