我正在尝试在我的 mongodb docker 容器中执行命令。在我的 linux 命令提示符下,它非常简单并且在我执行此操作时可以工作
docker exec -it d886e775dfad mongo --eval 'rs.isMaster()'
上面告诉我去一个容器并执行命令
"mongo --eval 'rs.isMaster()' - This tells mongo to take rs.isMaster() as an input and execute it. This works and gives me the output.
因为我试图通过 bash 脚本自动执行此操作,所以我这样做了
cmd="mongo --eval 'rs.isMaster()"
然后尝试像这样执行
docker -H $node2 exec d886e775dfad "$cmd"
但我想不知何故 docker 认为现在容器内的二进制文件不是 mongo 或其他东西,它给了我以下错误:
rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"mongo --eval 'rs.isMaster()'\": executable file not found in $PATH"
最佳答案
docker exec -it d886e775dfad sh -c "mongo --eval 'rs.isMaster()'"
这会调用 shell (sh
) 执行带引号的脚本。
请注意,这还修复了通配符 (*) 之类的问题,否则这些问题无法与 docker exec 一起正常工作。
https://stackoverflow.com/questions/43646273/
相关文章:
node.js - Mongoose(或类似的 ODM)内存记录注册表?
node.js - mongoose.connection.collections.collecti
mongodb - 为什么 mongo dot notation 会替换整个子文档?
javascript - 如何将文件名设置为与数据库中的对象 ID 相同?
mongodb - 语法错误 : missing ) after argument list @(s
javascript - 如何在 Node 议程中以编程方式定义多个具有相同名称的作业