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
命令。