我正在尝试在AWS EMR集群的主节点上执行脚本。目的是创建一个新的conda env并将其链接到jupyter。我正在关注AWS的这个文档。问题是,无论脚本的内容是什么,我都会遇到同样的错误:bash: /home/hadoop/scripts/bootstrap.sh: No such file or directory执行时sudo docker exec jupyterhub bash /home/hadoop/scripts/bootstrap.sh。我确保sh文件位于正确的位置。
但是如果我将bootstrap.sh文件复制到容器内,然后运行相同的docker exec cmd,它就可以了。我在这里错过了什么?我已尝试使用带有以下条目的简单脚本,但它会抛出相同的错误:
#!/bin/bash
echo "Hello"
该文件清楚地说:
内核安装在Docker容器中。完成此操作的最简单方法是使用安装命令创建bash脚本,将其保存到主节点,然后使用sudo docker exec jupyterhub script_name命令在jupyterhub容器中运行脚本。
sudo docker exec jupyterhub bash /home/hadoop/scripts/bootstrap.sh
这是对容器的操作,必须确保的是容器路径存在这个文件.
该docker exec命令在容器的命名空间内运行命令。其中一个名称空间是文件系统。因此,除非命令是映像的一部分,直接写入容器,或者您已经安装了主机卷以将主机目录映射到容器中,否则您将无法执行它。主机卷可能如下所示:
docker run -v /host/scripts:/container/scripts -n your_container $your_image
docker exec -it your_container /container/scripts/test.sh
该主机卷可以是主机和容器上的相同路径。
如果是shell脚本,则可以使用I / O重定向,例如:
docker exec -i $container_id /bin/bash 但请注意,由于脚本内容已将终端替换为标准输入,因此您无法以此方式执行交互式操作。这是有效的,因为容器内的shell只是处理来自stdin的命令。
除了那些场景之外,我不知道除了来自AWS的文档似乎是错误的之外该告诉你什么。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。