Docker新手求助:Dockerfile第1行解析错误,未知指令#
搞定Dockerfile解析错误:unknown instruction:
嘿,我来帮你排查这个问题!作为Docker新手遇到这个报错太正常了,这个提示说明Docker把你Dockerfile第一行的#当成了无效指令,而不是注释,我给你列几个最常见的原因和修复方法:
1. 先确认Dockerfile的文件名是不是写对了
你提到之前把文件名写成了Dockefile(多打了个e?),正确的文件名必须是Dockerfile(没有后缀,首字母大写,剩下的小写)。Windows系统虽然文件名不区分大小写,但Docker有时候会认死理,要是文件名不对,要么赶紧重命名成标准的Dockerfile,要么构建的时候用docker build -f Dockefile .指定你那个写错的文件名。
2. 检查Dockerfile的编码(Windows用户踩坑重灾区!)
这个错误80%的概率是文件带了BOM头——Windows自带的记事本保存UTF-8文件时,默认会加个看不见的BOM头,Docker读这个文件的时候,会把这个BOM头和#混在一起,误以为是个奇怪的指令。
- 用记事本打开你的Dockerfile,点「文件」→「另存为」,编码选「UTF-8(无BOM)」,然后覆盖保存;
- 要是用VS Code的话,看右下角的编码标识,切换成「UTF-8无BOM」格式再保存就行。
3. 看看Dockerfile第一行的格式对不对
如果你的第一行是注释,那#必须是该行的第一个字符,前面不能有空格或者看不见的乱码字符。比如正确的写法是:
# 基于Python基础镜像构建 FROM python:3.9-slim
要是写成 # 注释(前面多了空格),Docker就会把这整行当成指令,自然识别不了。另外,要是第一行不是注释,那必须是FROM这种有效的Docker指令,不能空着或者乱写。
4. 确认构建命令没写错
你得在存放三个文件的根目录下执行构建命令,比如:
docker build -t my-docker-app .
这里的.表示让Docker在当前目录找Dockerfile,别跑到别的目录执行命令了哦。
先按上面的步骤排查,优先检查文件名和编码,这俩是Windows新手最容易踩的坑!
内容的提问来源于stack exchange,提问作者Sharpless512
相关产品推荐
相关产品推荐

