gpt4 book ai didi

Docker 将主机 ${HOME}/.cache 复制到容器

转载 作者:行者123 更新时间:2023-12-04 15:17:59 25 4
gpt4 key购买 nike

我想将我的 winetricks 缓存复制到 docker 容器:

主持人:

~/.cache/winetricks

到容器
/home/myUser/.cache/winetricks.

我目前的方法是在 docker root 中创建缓存的副本并使用 COPY将缓存移至容器。这将使缓存在构建时可用。

我正在使用这种方法来节省构建时间。 Docker COPY命令在生产中被注释掉。

所以这是我的问题:
为什么我必须复制我的 ~/.cache目录?
为什么我不能将 docker root 外部的目录复制到容器中?

最佳答案

So here is my question: Why do I have to make a duplicate of my ~/.cache directory? Why can I not copy a directory from outside of the docker root to the container?



第一步 docker build命令是将构建上下文发送到执行构建的 docker 引擎。此引擎可能位于远程服务器上。此构建上下文通常是 .在命令行的末尾,指示将当前目录作为上下文发送。

此上下文用于每个 COPYADD命令,并且任何未包含在上下文中的文件都不可用于 COPYADD .更改行为以允许访问主机上的所有文件将破坏 docker 构建的客户端/服务器设计并引入一个安全漏洞,有人可以将恶意 Dockerfile 发送到构建服务器并使用它从服务器提取 secret 数据到图片。

您可以将构建上下文更改为您的主目录,而不是您的项目子目录。为此,您还需要更新所有 COPYADD路径相对于 $HOME 的命令.当您的整个主目录被发送到服务器时,您还会看到明显更长的构建时间。

对于您的具体问题,有一项新功能刚刚进入实验阶段,名为 BuildKit .正在实现的首批功能之一是 mounting a directory during a RUN command出于打包缓存的目的,您只想提取一次。

关于Docker 将主机 ${HOME}/.cache 复制到容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48952909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com