错误 Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: exec: "/opt/adguardhome/AdGuardHome": stat /opt/adguardhome/AdGuardHome: no such file or directory: unknown
时间: 2025-05-31 08:55:06 浏览: 41
### 解决 AdGuard Home Docker Compose 错误 `'exec "/opt/adguardhome/AdGuardHome": stat /opt/adguardhome/AdGuardHome: no such file or directory'`
此错误通常表明容器启动时无法找到 `/opt/adguardhome/AdGuardHome` 文件。这可能是由于以下几个原因之一引起的:
1. **挂载卷未正确初始化**:如果主机上的挂载路径为空或者权限不足,可能导致容器内部的初始文件丢失或不可用。
2. **镜像损坏或版本问题**:使用的镜像是旧版或存在问题,导致关键文件缺失。
3. **Dockerfile 构建问题**:如果是自定义构建的镜像,则可能存在构建过程中某些步骤未能成功完成的情况。
以下是针对该问题的具体解决方案:
---
#### 方案一:检查并重新初始化挂载卷
确保 `docker-compose.yml` 中的挂载路径已正确定义,并且主机上的对应目录存在。例如:
```yaml
volumes:
- ./adguardhome:/opt/adguardhome
```
在此配置中,`./adguardhome` 表示当前工作目录下的子目录。如果该目录不存在或为空,可能会导致容器中的必要文件被覆盖或删除。可以通过以下命令验证和修复:
```bash
mkdir -p ./adguardhome && chmod 755 ./adguardhome
```
随后重启容器以确保挂载生效[^3]。
---
#### 方案二:清理缓存并重新拉取镜像
有时,本地缓存的镜像可能已经过期或损坏。建议先移除现有容器及其关联数据,再重新拉取最新镜像:
```bash
docker-compose down --volumes
docker pull adguard/adguardhome:latest
docker-compose up -d
```
这些命令会停止并清除之前的容器实例及相关资源,同时下载最新的官方镜像并重新启动服务[^1]。
---
#### 方案三:确认镜像入口脚本兼容性
如果仍然遇到相同错误,考虑是否存在文件格式差异(如 Windows 和 Linux 的换行符)。对于这种情况,可以尝试显式设置文件系统的格式为 Unix 格式:
```bash
sed -i 's/\r//' docker-entrypoint.sh
chmod +x docker-entrypoint.sh
```
此外,也可以通过在 `docker-compose.yml` 文件中添加环境变量来强制指定文件编码方式:
```yaml
environment:
- LANG=C.UTF-8
- LC_ALL=C.UTF-8
```
以上措施有助于避免因字符集不一致引发的问题[^4]。
---
#### 方案四:静态编译依赖项处理
假如基础镜像采用 Alpine Linux 并涉及 Go 编程语言开发的应用程序,则需要注意是否遗漏了必要的运行时库支持。例如,当使用标准库中的网络模块 (`net`) 时,默认动态链接至 glibc 可能造成冲突。此时应选用具备完整 C 库支持的基础镜像或将应用程序完全静态化编译后再打包进容器内[^5]。
---
### 总结代码片段
最终调整后的 `docker-compose.yml` 示例如下所示:
```yaml
version: '3'
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguard-home
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
- "443:443/tcp"
volumes:
- ./adguardhome:/opt/adguardhome
environment:
- LANG=C.UTF-8
- LC_ALL=C.UTF-8
networks:
- homenetwork
networks:
homenetwork:
driver: bridge
```
---
阅读全文
相关推荐






