You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 23.04执行docker compose提示文件不存在但文件实际存在

问题描述

在Ubuntu 23.04(GNU/Linux 6.2.0-24-generic x86_64)系统中执行命令:

sudo docker compose -f /containers/watchtower/watchtower.yaml up -d

出现错误提示:

stat /containers/watchtower/watchtower.yaml: no such file or directory

但通过ls -l和stat命令可确认该文件确实存在。

相关环境信息:

$ docker compose version
Docker Compose version v2.17.2
$ python3 --version
Python 3.11.2
$ uname -r
6.2.0-24-generic

watchtower.yaml配置内容:

---
version: "3.8"
services:
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Europe/London
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_INCLUDE_STOPPED=true
      - WATCHTOWER_REVIVE_STOPPED=false
      - WATCHTOWER_LABEL_ENABLE=false
      - WATCHTOWER_MONITOR_ONLY=false
      - WATCHTOWER_TIMEOUT=300
      - WATCHTOWER_SCHEDULE=0 16 2 * * *
排查方向
  • 检查路径权限:尽管文件存在,但root用户(通过sudo执行)可能因父目录权限限制无法访问。执行ls -ld /containers /containers/watchtower查看目录权限,确保root拥有r-x权限。
  • 排查隐藏字符问题:复制粘贴的路径可能包含不可见特殊字符(如空格、换行、全角符号)。用realpath /containers/watchtower/watchtower.yaml输出真实路径,对比命令中的路径;或进入目录后用相对路径执行:cd /containers/watchtower && sudo docker compose -f watchtower.yaml up -d。
  • 验证挂载目录兼容性:如果/containers是外部存储挂载点(如NAS),Docker Compose可能无法正确解析该目录下的文件。可将yaml文件复制到本地临时目录(如/tmp),执行sudo docker compose -f /tmp/watchtower.yaml up -d测试,若正常运行则说明是挂载目录的问题。
  • 检查安全模块限制:Ubuntu默认启用AppArmor,可能阻止Docker访问特定路径。可临时关闭AppArmor(sudo systemctl stop apparmor)后重试,若问题解决,需配置AppArmor规则允许Docker访问该路径。
  • 核对命令拼写:仔细检查命令中的路径,确认是否存在拼写错误(如/container少了s)或大小写问题(Linux系统区分文件名大小写)。

内容的提问来源于stack exchange,提问作者crackpot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:23:09