Dockerfile中ENTRYPOINT指令无法识别的问题求助
Dockerfile中ENTRYPOINT被误识别为软件包的问题解决
问题根源
你的Dockerfile里,RUN指令最后一行的python3-pip末尾多了一个反斜杠\,导致Docker没有正确终止RUN命令——下一行的ENTRYPOINT被当成了apt-get install要安装的软件包参数,这就是报错E: Unable to locate package ENTRYPOINT的直接原因。
另外你怀疑的换行符问题确实也可能触发这类错误:如果Dockerfile是在Windows环境下编辑的,换行符是CRLF(\r\n),而Docker解析时只认可LF(\n),反斜杠后的\r会被当作命令的一部分,导致后续指令被合并到RUN中。
修正方案
1. 修复Dockerfile指令格式
去掉python3-pip后面的多余反斜杠,让RUN指令正确结束,ENTRYPOINT成为独立指令:
FROM ubuntu:16.04 RUN apt-get update && apt-get install -y --no-install-recommends \ python3.5 \ python3-pip ENTRYPOINT ["/bin/bash"]
2. 处理换行符问题(Windows编辑场景)
- 在代码编辑器中设置文件换行符为
LF(比如VS Code右下角可直接切换换行符类型) - 使用
dos2unix工具转换Dockerfile:dos2unix Dockerfile
验证
构建修正后的镜像:
docker build -t ubuntu-python .
运行容器时无需手动指定/bin/bash,直接执行:
docker run -ti --name ubuntu-teste_2 --rm ubuntu-python
内容的提问来源于stack exchange,提问作者Gabriel Padilha
相关产品推荐
相关产品推荐

