You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker RUN指令HereDoc示例运行失败,请求技术排查与解决

Dockerfile HereDoc语法报错问题解决

问题背景

我尝试实现Docker官方文档提供的HereDoc示例,Dockerfile内容如下:

# syntax=docker/dockerfile:1.3-labs

FROM ubuntu:20.04

RUN <<EOF
echo "Hello" >> /hello
echo "World!" >> /hello
EOF

使用的Docker版本:

~/test$ docker --version
Docker version 20.10.22, build 3a2c30b

构建时抛出错误:

~/test$ docker build .
Sending build context to Docker daemon  2.048kB
Error response from daemon: dockerfile parse error line 6: unknown instruction: ECHO

我还尝试了指定Dockerfile版本1、1.3、1.4、2、2.0,均未解决问题。请问是操作有误还是该功能暂不可用?

问题原因及解决方法

  • 核心原因:你的Docker版本(20.10.22)不支持Dockerfile 1.3-labs的HereDoc语法。HereDoc是Docker BuildKit的实验性功能,需要同时满足两个条件:

    1. Docker版本至少为23.0.0(这是支持该实验性语法的最低版本要求)
    2. 必须启用BuildKit构建模式
  • 具体解决步骤:

    1. 升级Docker版本:将Docker升级到23.0.0或更高版本,低版本无法识别该语法
    2. 启用BuildKit:
      • 临时启用:执行构建命令时添加环境变量,命令为 DOCKER_BUILDKIT=1 docker build .
      • 永久启用:编辑/etc/docker/daemon.json文件,添加配置{"features":{"buildkit": true}},保存后重启Docker服务
  • 错误说明:低版本Docker会将EOF包裹的echo命令误识别为Dockerfile指令,而非Shell命令,因此抛出"unknown instruction: ECHO"错误,即便指定更高的Dockerfile版本标签也无法解决,因为底层Docker引擎不支持该特性。

内容的提问来源于stack exchange,提问作者Eric M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:15:30