当前位置: 首页 > 知识库问答 >
问题:

使用docker exec执行主机上的shell脚本时出现问题

栾英资
2023-03-14

我试图在AWS EMR集群的主节点上执行一个脚本。目的是创建一个新的conda env并将其链接到jupyter。我正在关注AWS的这份文件。问题是,无论脚本的内容是什么,我都会遇到相同的错误:bash:/home/hadoop/scripts/bootstrap。sh:执行sudo docker exec jupyterhub bash/home/hadoop/scripts/bootstrap时,没有这样的文件或目录。我已确保sh文件位于正确位置。

但是,如果我在容器中复制bootstrap.sh文件,然后运行相同的docker exec cmd,它会正常工作。我在这里错过了什么?我尝试了一个包含以下条目的简单脚本,但它抛出了相同的错误:

#!/bin/bash
echo "Hello"

医生清楚地说:

内核安装在Docker容器中。实现这一点的最简单方法是使用安装命令创建bash脚本,将其保存到主节点,然后使用sudo docker exec jupyterhub script\u name命令在jupyterhub容器中运行脚本。


共有1个答案

茅高卓
2023-03-14

docker exec命令在容器的命名空间中运行命令。其中一个命名空间是文件系统。因此,除非该命令是映像的一部分,直接写入容器中,或者您已安装主机卷以将主机目录映射到容器中,否则您将无法执行它。主机卷可能如下所示:

docker run -v /host/scripts:/container/scripts -n your_container $your_image
docker exec -it your_container /container/scripts/test.sh

该主机卷可以是主机和容器上的同一路径。

如果是shell脚本,则可以使用输入/输出重定向,例如:

docker exec -i $container_id /bin/bash <local_script.sh

但是请注意,您不能以这种方式进行交互式操作,因为脚本内容已将您的终端替换为标准输入。这是因为容器内的shell只是处理来自标准输入的命令。

除了这些场景,我不知道该告诉你什么,除了AWS的文档似乎是错误的。

 类似资料:
  • Invoke-WebRequest:请求中止:无法创建SSL/TLS安全通道。在C:\users\njujjavarapu\desktop\snapshot.ps1:8 char:1+Invoke-WebRequest-uri https://njidlsdsapp01/support invoke-RestMethod:请求中止:无法创建SSL/TLS安全通道。在C:\users\njujjav

  • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

  • 本文向大家介绍shell脚本实现同时多台远程主机执行命令的代码分享,包括了shell脚本实现同时多台远程主机执行命令的代码分享的使用技巧和注意事项,需要的朋友参考一下 实现需求 在对单台机器做操作时我们会用“ssh ip”的方式登录到机器上,可以写这样一个工具vssh ip1,ip2,…ipn 来模拟登录到n 台服务器,登录后所有操作相当于同时对n 台服务器生效。 实现方法 首页要确保可以通过本地

  • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

  • 我已经在我的系统中安装了python、pip和selenium,我正在基本站点上测试一个示例代码。 代码: 如何解决此问题?

  • 问题内容: 我需要执行一个shell脚本。难得的是我想这样做 我不希望它等待命令完成,我希望它在后台进程中运行。我不想要另一个php线程,因为它将超时,该命令最多可能需要3个小时才能完成。 问题答案: 您需要重定向命令的输出。 如果使用此功能启动程序,则要使其在后台继续运行,必须将程序的输出重定向到文件或其他输出流。否则,PHP会挂起,直到程序执行结束。 http://php.net/manual