Docker Compose v2脚本正确语法咨询:解决命令未找到报错
问题原因与解决方法
为什么会出现这个错误?
错误提示sudo: /usr/local/bin/docker: command not found的核心原因是:你指定的/usr/local/bin/docker路径不存在docker可执行文件,或者sudo的环境变量PATH未包含docker实际所在目录,导致sudo找不到docker命令。
关于Docker Compose的版本差异,你了解的是对的:
- v1版本使用独立命令
docker-compose(连字符连接) - v2版本已集成到Docker CLI,语法为
docker compose(空格分隔)——你用的v2语法本身没问题,问题出在docker命令的路径上。
解决步骤
- 查找docker的实际路径
在普通用户终端执行:
which docker
该命令会返回docker的真实安装路径,比如/usr/bin/docker。
- 使用正确路径执行命令
将原命令中的/usr/local/bin/docker替换为查到的真实路径,示例:
sudo /usr/bin/docker compose exec -T ...
- (可选)修复sudo的PATH环境变量
如果不想每次都写全路径,可以让sudo的PATH包含docker所在目录:
- 执行
sudo visudo编辑sudoers文件(必须用visudo,防止语法错误导致sudo失效) - 找到
Defaults secure_path行,添加docker所在路径,示例:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin"
- 保存退出后,直接运行
sudo docker compose exec -T ...即可正常执行。
内容的提问来源于stack exchange,提问作者user5438991
相关产品推荐
相关产品推荐

