我有一个Dockerfile,它包含以下行:
USER lodgepole
CMD ["tail", "-f", "~/block.txt"]
但是容器退出,错误为找不到文件~/block.txt
以下内容确实如预期的那样起作用:
CMD ["tail", "-f", "/home/lodgepole/block.txt"]
这是Docker中的一个错误,还是有我不知道的与波浪号扩展有关的限制?
在Linux上使用Docker 20.10.9。
颚化符展开由shell完成。当您使用CMD的exec形式时,没有shell进行扩展。
您可以使用CMD的shell形式,它通过shell运行命令,如以下
CMD tail -f ~/block.txt
或者,您可以使用exec表单并显式运行shell,如以下
CMD ["/bin/sh", "-c", "tail -f ~/block.txt"]
这两个命令的作用完全相同。如果使用shell表单,它将以与exec窗体相同的方式运行shell。
更多信息请点击此处:https://docs.docker.com/engine/reference/builder/#cmd