三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Docker小白也能搞定:5分钟在Ubuntu 22.04上部署ARL灯塔(附常见错误排查清单)

Docker小白也能搞定:5分钟在Ubuntu 22.04上部署ARL灯塔(附常见错误排查清单)

Docker零基础实战:Ubuntu 22.04快速部署ARL灯塔全指南

第一次接触Docker和ARL灯塔时,我花了整整两天时间才把环境跑通。各种报错像打地鼠一样冒出来——不是权限问题就是端口冲突,最崩溃的是连docker命令都找不到。如果你也经历过这种绝望,这篇手把手教程就是为你准备的。不同于那些只展示成功路径的"理想化"指南,这里会带你踩过每一个可能的坑,直到登录页面亮起为止。

1. 环境准备:从零开始的Ubuntu配置

刚装好的Ubuntu 22.04就像一张白纸,我们需要先准备好画布。打开终端时,建议先执行这三个黄金命令:

sudo apt update sudo apt upgrade -y sudo apt install curl git -y

这组命令会更新软件源索引、升级现有软件包,并安装后续必需的curl和git工具。遇到过不少新手直接跳过这步,结果在后续环节莫名其妙报错。特别提醒:所有涉及系统变更的操作都需要sudo权限,忘记加sudo就像用游客账号改系统设置——必然碰壁。

1.1 Docker引擎安装避坑指南

官方文档的安装命令看起来很美好,但在国内网络环境下可能会遇到这些典型问题:

  1. 下载速度慢如蜗牛:推荐使用国内镜像源
  2. 证书验证失败:需要手动添加信任源
  3. 用户组权限缺失:导致每次都要sudo

这里给出优化后的安装流程:

# 卸载旧版本(如果有) sudo apt remove docker docker-engine docker.io containerd runc # 安装依赖工具 sudo apt install apt-transport-https ca-certificates gnupg lsb-release -y # 添加阿里云Docker镜像源 curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io -y

安装完成后,最关键的步骤来了——将当前用户加入docker组:

sudo usermod -aG docker $USER newgrp docker

这个操作能避免每次都要输入sudo的麻烦,但需要重新登录才能生效。曾经有学员卡在这步三天,直到发现需要完全退出SSH会话重新连接。

验证安装是否成功时,别只用简单的docker --version,建议运行:

docker run --rm hello-world

如果看到"Hello from Docker!"的欢迎信息,说明引擎已正常运转。否则可能会遇到这些常见错误:

错误现象可能原因解决方案
Cannot connect to Docker daemon服务未启动/权限不足sudo systemctl start docker并检查用户组
TLS handshake timeout网络连接问题更换国内镜像源或检查代理设置
permission denied用户组配置错误重新执行usermod并重启会话

2. ARL灯塔部署实战

2.1 项目获取与目录准备

官方推荐通过git克隆仓库,但在国内有时会遇到连接超时。这里提供两种备选方案:

方案A:Git常规克隆

git clone https://github.com/TophantTechnology/ARL.git cd ARL/docker

方案B:加速通道下载

git clone https://ghproxy.com/https://github.com/TophantTechnology/ARL.git cd ARL/docker

方案C:直接下载ZIP包

wget https://github.com/TophantTechnology/ARL/archive/refs/heads/master.zip unzip master.zip cd ARL-master/docker

提示:如果使用企业网络,可能需要配置git代理:git config --global http.proxy http://proxy.example.com:8080

2.2 Docker-compose编排启动

进入docker目录后,先创建数据卷防止信息丢失:

docker volume create arl_db

启动服务时建议使用这个增强命令:

docker-compose pull && docker-compose up -d

pull会先拉取最新镜像,-d参数让服务在后台运行。第一次执行可能会遇到这些情况:

  1. 镜像下载缓慢:修改docker配置使用国内镜像加速器
  2. 端口冲突:5003端口被占用时需要修改docker-compose.yml
  3. 内存不足:ARL至少需要4GB内存,虚拟机用户注意分配资源

检查服务是否正常启动:

docker ps -a

正常应该看到三个容器:arl_web、arl_scheduler和arl_mongo。如果状态不是"Up",可以用docker logs 容器名查看具体错误。

3. 常见问题诊断手册

3.1 Docker命令未找到

症状:终端提示"docker: command not found" 根本原因:Docker未正确安装或PATH配置异常

分步排查:

  1. 确认安装是否完成:which docker应该返回/usr/bin/docker
  2. 检查PATH变量:echo $PATH应包含/usr/bin
  3. 尝试绝对路径:/usr/bin/docker --version

终极解决方案:

sudo apt install docker.io sudo systemctl enable --now docker

3.2 端口5003冲突

当看到"Bind for 0.0.0.0:5003 failed: port is already allocated"时:

  1. 找出占用进程:
sudo lsof -i :5003
  1. 根据PID结束进程:
sudo kill -9 <PID>
  1. 或者修改ARL端口:
# 编辑docker-compose.yml ports: - "新端口:5003"

3.3 数据库连接失败

容器日志出现"MongoNetworkError: failed to connect to server"时:

  1. 检查mongo服务状态:
docker exec arl_mongo mongosh --eval "db.stats()"
  1. 重置数据卷:
docker volume rm arl_db docker volume create arl_db docker-compose up -d

4. 系统配置与优化

4.1 访问控制设置

首次登录后(默认admin/arlpass),立即做这三件事:

  1. 修改管理员密码
  2. 创建专属API密钥
  3. 设置IP访问白名单

安全配置建议:

  • 定期备份/docker/data目录
  • 使用Nginx添加HTTPS加密
  • 启用Docker的日志轮转功能

4.2 性能调优参数

在docker-compose.yml中调整这些参数可提升效率:

environment: - WORKER_NUM=4 # CPU核心数 - SCHEDULER_NUM=2 - TASK_WORKERS=10

对于大规模扫描任务,建议单独部署Redis作为消息队列:

services: redis: image: redis:alpine ports: - "6379:6379"
← 返回列表