【发布时间】:2018-05-03 11:36:09
【问题描述】:
我创建了一个包含以下 CMD 的 docker 映像:
CMD ["sh", "start.sh"]
当我运行 docker 映像时,我在 Makefile 中使用以下命令
docker run --rm -v ${PWD}:/selenium $(DOCKER_IMAGE)
将文件从当前(主机)目录复制到 docker 的 /selenium 文件夹。这些文件包括用于硒测试的文件,以及文件start.sh。但是容器启动后,我立即收到错误
"sh: 0: Can't open start.sh"
也许主机卷安装在docker 之后命令已经运行?还有什么可以解释这个错误的,以及如何解决它?
也许有一种方法可以在 docker 中运行多个命令以查看发生了什么?喜欢
CMD ["ls", ";", "pwd", ";", "sh", "start.sh"]
更新
当我在 Dockerfile 中使用以下命令时
CMD ["ls"]
我得到了错误
ls: cannot open directory '.': Permission denied
额外信息
- Docker 版本 1.12.6
- 入口点:
WORKDIR /work
【问题讨论】:
-
您是否尝试过使用这里建议的
/bin/sh:Running a script inside a docker container using shell script? -
不能用简单的
ls来解释我遇到的问题... -
您运行的是什么版本/平台的 Docker?卷源有哪些权限,包括主机上的uid/gid?
-
您的图片的
ENTRYPOINT是什么?它是默认的 (/bin/sh -c) 吗?如果不是,也许这就是ls失败的原因。 -
如果您解决了问题,请回答。如果没有,请提供您的环境的更多详细信息,以便我们弄清楚发生了什么(例如,一个完整的 Dockerfile 以便我们重现您的问题)。无论如何,您是否尝试运行
pwd来检查工作目录是什么?whoami也可能有用。