我尝试执行的命令
docker exec apache_mp 'find / -type f -name artisan 2>&1 | grep -v "Permission denied"'
返回
OCI运行时exec失败:exec失败:container_linux.go:348:正在启动 容器过程引起“ exec:\”查找/ -type f -name artisan 2>&1 | grep -v Permission \“:统计信息查找--type f -name artisan 2>&1 | grep -v 权限:没有这样的文件或目录”:未知
这很奇怪,因为从portainer运行同一命令时它确实起作用。为什么会这样?
答案 0 :(得分:1)
Docker假定容器名称之后的第一个参数应为要执行的二进制文件。由于'find / -type f -name artisan 2>&1 | grep -v "Permission denied"'
放在方括号中,因此docker认为整件事就是二进制文件的名称。
您可以使用bash作为二进制文件来使其工作:
docker exec apache_mp /bin/bash -c ' find / -type f -name artisan 2>&1 | grep -v "Permission denied"'