Dockerfile 中无法识别主符号`~`
Home symbol `~` not recognized in 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
构建它时,它因错误而停止:
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 中,无法将系统上任何位置的文件复制到映像中,因为这会被视为安全风险。 COPY 路径始终被认为是相对于构建上下文的,它是您 运行 docker build
命令所在的当前目录。
文档中对此进行了描述:https://docs.docker.com/reference/builder/#copy
因此,~
没有任何用处,因为它会尝试将您定向到不属于上下文的位置。
如果您想将本地 id_rsa
文件放入 docker,您应该先将其放入上下文,例如将其与 Docker 文件一起复制,并以此方式引用它。
在我的 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
构建它时,它因错误而停止:
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 中,无法将系统上任何位置的文件复制到映像中,因为这会被视为安全风险。 COPY 路径始终被认为是相对于构建上下文的,它是您 运行 docker build
命令所在的当前目录。
文档中对此进行了描述:https://docs.docker.com/reference/builder/#copy
因此,~
没有任何用处,因为它会尝试将您定向到不属于上下文的位置。
如果您想将本地 id_rsa
文件放入 docker,您应该先将其放入上下文,例如将其与 Docker 文件一起复制,并以此方式引用它。