Docker执行cd命令报executable file not found in $PATH错误如何解决
问题原因
cd是shell内置命令,并非独立的二进制可执行文件。docker run命令传入的自定义指令默认会被直接exec执行,不会默认启动shell做内置命令解析,因此系统找不到名为cd的可执行文件,直接报错。- 退一步说,就算你能直接执行
cd workspace,这个操作也没有实际意义:该命令执行完成后容器会直接退出,工作目录的变更不会保留到下一次容器启动。
解决方法
- 如果需要执行包含cd在内的多段连续命令,需要主动将指令传给shell解析,示例命令如下:
docker run -it cloudbuildtoolset:latest bash -c "cd workspace && 这里替换成你实际要执行的后续命令"
- 如果希望容器启动后默认的工作目录就是
workspace,不需要每次手动切换,直接在Dockerfile中添加WORKDIR指令即可,修改后的Dockerfile参考:
FROM ubuntu:20.04 RUN apt -y update && apt-get -y update RUN apt install -y python3 git # 指定容器默认工作目录,若目录不存在会自动创建 WORKDIR /workspace CMD bash
修改后重新构建镜像,启动容器后默认就会在/workspace目录下,不需要额外执行cd命令。
- 额外说明:你在Dockerfile中定义的
CMD bash是默认启动指令,当你在docker run后传入自定义命令时,默认的CMD会被覆盖,因此你传入的命令会直接作为容器启动的1号进程执行。
内容的提问来源于stack exchange,提问作者wcobalt
相关产品推荐
相关产品推荐

