Docker exec命令中的管道返回错误

时间:2018-10-10 09:57:03

标签: docker exec

我尝试执行的命令

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运行同一命令时它确实起作用。为什么会这样?

enter image description here

1 个答案:

答案 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"'