家庭符号`〜`在Dockerfile中无法识别

在我的dockerfile中,我想从我的主机的~/.ssh复制一个文件到容器中,所以我这样做:

 # create ssh folder and copy ssh keys from local into container RUN mkdir -p /root/.ssh COPY ~/.ssh/id_rsa /root/.ssh/ 

但是当我运行docker build -t foo来构build它时,它停止了一个错误:

 Step 2 : RUN mkdir -p /root/.ssh ---> Using cache ---> db111747d125 Step 3 : COPY ~/.ssh/id_rsa /root/.ssh/ ~/.ssh/id_rsa: no such file or directory 

看起来~符号没有被dockerfile识别,我怎么能解决这个问题呢?

在Docker中,不可能将系统中任何地方的文件复制到映像中,因为这会被认为是安全风险。 COPYpath始终被认为是相对于构build上下文的,这是运行docker build命令的当前目录。

这在文档中描述: https : //docs.docker.com/reference/builder/#copy

因此,这个词没有任何意义,因为它会试图引导你到一个不属于上下文的地方。

如果你想把你的本地id_rsa文件放到docker中,你应该先将它放到上下文中,例如把它复制到Dockerfile中,然后引用它。