Docker 文件中提及主目录的正确语法是什么?

What is the correct syntax in a Docker file to mention home directory?

我在 Mac 上使用 Docker。

我的 Docker 文件中有以下行。

COPY ~/.pip/pip.conf /root/.pip/pip.conf

这会产生错误

    ERROR [5/6] COPY ~/.pip/pip.conf /root/.pip/pip.conf                                                                                                                                                                                                    0.0s
------
 > [5/6] COPY ~/.pip/pip.conf /root/.pip/pip.conf:
------
failed to compute cache key: “/~/.pip/pip.conf” not found: not found

完成上述复制命令的正确语法是什么?

What is the correct syntax in a Docker file to mention home directory?

有none.

此外,您不能从构建上下文之外进行复制。

在构建容器之前将文件复制到构建上下文,然后将它们从构建上下文复制到容器中。

构建 docker 映像时,COPY 语句只能从 'build context' 中复制文件。通常上下文是包含 Dockerfile 的目录。上下文是目录及其下的所有目录。出于安全原因,您不能从构建上下文外部复制文件。

因此,只有复制您引用的文件在构建上下文中的位置才有意义。相对于用户的主目录引用它们没有任何意义,即使该目录在构建上下文中也是如此。

您无法使用 COPY 访问任意目录;来源是相对于 上下文 的。如果要将个人pip.conf文件添加到Docker图像中,需要将其复制到运行docker build.

之前的上下文中

配合指令

COPY ./.pip.conf /root/.pip/pip.conf

使用类似

的东西
cp ~/.pip/pip.conf .
docker build -t someimage .