故障排除
常见问题及其解决方案。如有疑问,请先运行 rdc doctor 进行全面诊断检查。
SSH连接失败
- 验证您是否可以手动连接:
ssh -i ~/.ssh/id_ed25519 deploy@203.0.113.50 - 运行
rdc context scan-keys server-1以刷新主机密钥 - 检查SSH端口是否匹配:
--port 22 - 测试连接:
rdc machine test-connection --ip 203.0.113.50 --user deploy
主机密钥不匹配
如果服务器被重新安装或其SSH密钥已更改,您将看到 “host key verification failed”:
rdc context scan-keys server-1
此命令获取新的主机密钥并更新您的配置。
机器设置失败
- 确保SSH用户拥有无密码的sudo访问权限,或为所需命令配置
NOPASSWD - 检查服务器上的可用磁盘空间
- 使用
--debug运行以获取详细输出:rdc context setup-machine server-1 --debug
仓库创建失败
- 验证设置已完成:数据存储目录必须存在
- 检查服务器上的磁盘空间
- 确保renet二进制文件已安装(如需要请重新运行设置)
服务启动失败
- 检查Rediaccfile语法:必须是有效的Bash
- 确保
docker compose文件使用network_mode: host - 验证Docker镜像是否可访问(考虑在
prep()中使用docker compose pull) - 通过仓库的Docker套接字检查容器日志:
rdc term server-1 my-app -c "docker logs <container-name>"
或查看所有容器:
rdc machine containers server-1
权限被拒绝错误
- 仓库操作需要服务器上的root权限(renet通过
sudo运行) - 验证您的SSH用户是否在
sudo组中 - 检查数据存储目录是否具有正确的权限
Docker套接字问题
每个仓库都有自己的Docker daemon。手动运行Docker命令时,必须指定正确的套接字:
# 使用rdc term(自动配置):
rdc term server-1 my-app -c "docker ps"
# 或手动指定套接字:
docker -H unix:///var/run/rediacc/docker-2816.sock ps
将 2816 替换为您仓库的网络ID(可在 config.json 或 rdc repo status 中找到)。
容器在错误的Docker daemon上创建
如果您的容器出现在主机系统的Docker daemon上而不是仓库的隔离daemon上,最常见的原因是在Rediaccfile中使用了 sudo docker。
sudo 会重置环境变量,因此 DOCKER_HOST 丢失,Docker默认使用系统套接字(/var/run/docker.sock)。Rediacc会自动阻止此行为,但如果您遇到此问题:
- 直接使用
docker— Rediaccfile函数已经以足够的权限运行 - 如果必须使用sudo,请使用
sudo -E docker以保留环境变量 - 检查您的Rediaccfile中是否有
sudo docker命令,并删除sudo
终端无法工作
如果 rdc term 无法打开终端窗口:
- 使用
-c的内联模式直接运行命令:rdc term server-1 -c "ls -la" - 如果内联模式有问题,使用
--external强制打开外部终端 - 在Linux上,确保已安装
gnome-terminal、xterm或其他终端模拟器
运行诊断
rdc doctor
此命令检查您的环境、renet安装、上下文配置和身份验证状态。每项检查会报告OK、Warning或Error,并附带简要说明。