背景
因#%@&&¥@的原因,服务主机要移到arm下,需要重新构建镜像来验证功能,原来在amd下四肢健全的 Dockerfile
居然瘸了😒
排查
Dockerfile
里有一步需要添加公钥,用到了echo -e
命令,哎~问题来了,它居然把 -e
输出出来了
再发现 bash
可以 sh
不可以
原因
这个说来话长,咱们长话短说
shell 有很多种,不同的shell支持的语法不同,dash 比 bash 更小更快,所以 Ubuntu 6.10 开始默认的sh都是Dash Shell,dash 不支持 echo -e
, over ~
解决
在 Dockerfile
里加上 shell 切换
# 切换bash
RUN ln -sfn /bin/bash /bin/sh