在PowerShell中创建DockerFile报不支持from关键字的问题排查
报错核心原因
该报错与Docker安装、Docker Desktop配置无任何关联,完全是操作场景错位导致:
- 你将Dockerfile的专属构建指令
FROM mcr.microsoft.com/dotnet/aspnet:3.1直接粘贴到PowerShell交互终端中回车执行。 - PowerShell作为命令行脚本解释器,会把接收到的输入全部按照自身语法规则解析。当它识别到
FROM关键字时,会对照当前PowerShell版本的语法校验规则做检查,你当前使用的Windows PowerShell版本不支持该关键字对应的语法逻辑,因此抛出The 'from' keyword is not supported in this version of the language.的错误。 - 这一报错全程由PowerShell自身抛出,Docker Desktop根本没有机会接收这行输入,自然和Linux容器模式、镜像适配这些设置没有关系。
- 你参考的官方文档中,
FROM属于Dockerfile文件的书写内容,并非可以直接在PowerShell终端执行的命令。

正确操作流程
- 在目标目录
D:\Website\Project\Dockers\App下,创建一个无文件后缀、文件名为严格为Dockerfile的纯文本文件- Windows默认隐藏已知文件类型的扩展名,极易误生成
Dockerfile.txt这类不符合Docker要求的文件名,创建完成后务必在资源管理器的「查看」标签页勾选「文件扩展名」,确认文件名完全匹配要求
- Windows默认隐藏已知文件类型的扩展名,极易误生成
- 使用任意纯文本编辑器打开新建的Dockerfile,按语法规范逐行写入构建指令,第一行即为
FROM mcr.microsoft.com/dotnet/aspnet:3.1,完成书写后保存关闭文件 - 返回PowerShell终端,执行
docker build .类Docker构建命令,此时PowerShell会正常将构建请求转发给Docker Desktop,不会再触发PowerShell自身的语法解析错误。
额外避坑提示
- 不要图省事在PowerShell中用简单文本重定向命令生成Dockerfile:Windows PowerShell默认导出的文本是带BOM的UTF-16编码,Docker构建引擎无法正确识别这种编码的Dockerfile,后续会触发额外的解析报错
- 你当前配置的Docker Desktop Linux容器模式,完全适配3.1版ASP.NET官方镜像的运行要求,不需要额外调整配置。
内容的提问来源于stack exchange,提问作者yogihosting
相关产品推荐
相关产品推荐

