Docker中COPY正常运行但ADD指令报错的问题排查
问题解析
你遇到的错误和COPY/ADD指令本身没有任何关系,核心问题出在引号的类型上:
- 你注释掉的那段
CMD [“python”, “./main.py”]用的是中文智能引号(“”),而Docker要求JSON格式的指令必须使用ASCII标准双引号("")。 - 当你使用带智能引号的
CMD时,Docker会把整个[“python”, “./main.py”]当成一个完整的shell命令去执行,而不是解析成JSON数组,所以才会出现/bin/sh: 1: [“python”,: not found的错误——它把[“python”,当成了要执行的命令名,自然找不到。
至于你觉得切换ADD就出错,是因为你切换时启用了那段带错误引号的代码;而使用COPY时用的是正确引号的CMD,所以能正常运行。在复制单个本地文件到镜像的场景下,COPY和ADD的功能完全一致,二者不会导致这类执行错误。
另外,你提到的官方教程里的智能引号,大概率是网页排版渲染时的格式问题,实际编写Dockerfile时必须使用ASCII标准引号(单引号或双引号),绝对不能用中文智能引号。
内容的提问来源于stack exchange,提问作者Casey Cushing
相关产品推荐
相关产品推荐

