RUN echo -e“deb http …”准备目标文件的错误内容

主机与Ubuntu 16.04.2

Docker 版本17.06.0-ce

Dockerfile

RUN echo -e "deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx\ndeb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx" | tee /etc/apt/sources.list.d/nginx.list 

这导致在/etc/apt/sources.list.d/nginx.list中

 -e deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx 

那么,就好像对反斜杠转义的解释一样。 但是这个“-e”发生在文件中。

然后这样的图像不能build立。

你能在这里给我一个踢吗?

尝试使用echo命令的bash shell来代替。 默认情况下,Docker使用sh shell,由于某种原因,它不喜欢-e字符,并将其作为其input的一部分进行回显。

解决这个问题

更新到:

 RUN bash -c 'echo -e "deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx\ndeb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx" | tee /etc/apt/sources.list.d/nginx.list' 

输出:

root @ 87944d07f493:/etc/apt/sources.list.d# cat nginx.list deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb-src http://nginx.org/packages/mainline/ ubuntu / xenial nginx

您可以通过切换到sh当前terminal会话来复制此“docker问题”,然后再次执行相同的echo命令。