docker - Dockerfile 中无法识别主符号 `~`

标签 docker 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中,你应该首先将其放入上下文中,例如将其与 Dockerfile 一起复制,并以这种方式引用它。

关于docker - Dockerfile 中无法识别主符号 `~`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018953/

相关文章:

node.js - 为什么执行 docker run 命令后容器立即退出?

python mysql.connector 模块使用错误的 IP 地址

docker - 链接 Docker 镜像并按顺序执行

docker - 如何在 Dockerfile 中安装 nvm?

Docker 与 BitBucket

r - 构建 Docker 镜像并指定端口后,Shiny 应用程序未显示

Docker 的错误 : libselinux conflicts with fakesystemd

docker - 如何配置 docker-compose 以便将磁盘挂载到文件夹,而不是本地磁盘

java - 在 docker-compose 文件中指定 JVM 选项

macos - 为 docker for mac 指定 ip 地址