Docker容器状态为UP但执行exec命令提示no such container错误如何解决
问题原因
- 权限匹配问题:如果用
sudo docker ps查看容器列表,但是执行docker exec时没有加sudo,普通用户默认没有访问Docker daemon的权限,会返回找不到容器的错误。 - 容器名拼写或命名规则差异:Docker Compose v2默认使用短横线
-作为容器名分隔符,而非旧版本的下划线_,手动输入名称时容易出现拼写错误、大小写错误或符号匹配错误。 - 命令参数冲突:执行导入SQL的操作不需要交互式终端,
-it参数和输入重定向<存在冲突,部分环境下会返回歧义性的错误提示,被误判为容器不存在。 - 容器状态临时异常:执行
docker ps确认容器运行后,到执行docker exec的间隙容器意外退出,也会触发找不到容器的报错。
解决方案
- 统一执行权限:查看容器和执行exec命令使用相同的权限规则,要么都加sudo,要么将当前用户加入docker用户组后执行:
# 带sudo执行示例 sudo docker exec laradock_mysql_1 mysql -uroot -proot <../database/scripts/create_database.sql
- 准确匹配容器名:执行以下命令复制准确的容器名称,避免手动输入错误:
docker ps --format "table {{.Names}}"
如果确认容器名使用短横线分隔,将命令中的容器名替换为实际名称即可。
3. 移除冲突参数:导入SQL不需要交互式终端,删除命令中的-it参数即可解决参数冲突问题。
4. 确认容器状态:执行exec前再次运行docker ps确认目标容器处于运行状态即可。
内容的提问来源于stack exchange,提问作者virxu
相关产品推荐
相关产品推荐

