以下内容是AI给出的分析。重新安装docker问题解决。
你遇到了一个非常典型的问题:
open /var/lib/snapd/void/docker-compose.yml: no such file or directory
但你在运行:
docker compose -f ./docker-compose.yml up -d
文件明明存在(ll 确认过),却报错读取了一个 完全不相关的路径:/var/lib/snapd/void/docker-compose.yml
结论先行
你安装的 Docker 是通过 Snap 安装的!
这导致了严重的路径隔离问题:Snap 版 Docker 无法访问 /opt、/home 等外部路径,会出现“空洞(void)”重定向行为。
根本原因分析
Snap 安装的 Docker 有严重缺陷:
这就是为什么提示这个诡异路径。
如何验证?
运行:
which docker
如果输出:
/snap/bin/docker
或者:
docker version --format '{{.Client.Version}}'
# 输出包含 "snap"
说明你是 Snap 安装的 Docker,这是问题根源!
解决方案:卸载 Snap Docker,改用官方 APT 安装
步骤 1:卸载 Snap 版 Docker
sudo snap remove docker
这会删除所有容器、镜像、卷!请提前备份重要数据(或确认无关键服务)。
步骤 2:安装官方 Docker(推荐方式)
# 1. 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# 2. 添加官方 GPG 密钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 3. 添加仓库源
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 更新并安装
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 5. 添加当前用户到 docker 组(可选)
sudo usermod -aG docker $USER
重启终端或执行 newgrp docker 生效。
步骤 3:验证安装
docker --version
docker compose version
which docker
正常输出应为:
Docker version 28.1.1, build abcdefg
Docker Compose version v2.33.1
/usr/bin/docker
不再是 /snap/bin/docker
步骤 4:现在可以正常运行你的命令
cd /opt/1panel/apps/openresty/openresty
docker compose -f docker-compose.yml up -d
应该能成功启动。
替代方案(临时绕过,不推荐)
如果你暂时不想重装,可以:
# 复制文件到 /tmp(Snap 允许访问)
cp /opt/1panel/apps/openresty/openresty/docker-compose.yml /tmp/
cd /tmp
docker compose -f docker-compose.yml up -d
但依然受限于 Snap 的稳定性问题,长期使用风险高。
总结
| 问题 |
原因 |
解决 |
open /var/lib/snapd/void/docker-compose.yml |
Snap 沙盒限制导致路径映射错误 |
卸载 Snap Docker |
| 文件存在却读不到 |
Snap 无法访问 /opt 目录 |
改用 APT 安装 |
docker compose 不工作 |
Snap 插件机制异常 |
使用官方插件 |
推荐命令(一键修复)
# 卸载 Snap Docker
sudo snap remove docker
# 安装官方 Docker
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
完成后,再运行:
cd /opt/1panel/apps/openresty/openresty
docker compose -f docker-compose.yml up -d
必然成功。
需要我帮你写一个脚本自动迁移并启动 OpenResty 吗?可以包括备份、重装、恢复等步骤。