如何将文件添加到现有的 docker 镜像? [复制]
Posted
技术标签:
【中文标题】如何将文件添加到现有的 docker 镜像? [复制]【英文标题】:How to add files to an existing docker image? [duplicate] 【发布时间】:2021-10-28 10:36:15 【问题描述】:我有一个基于 Windows 的 docker 容器,运行它并在其中运行一个应用程序。但有时我需要向图像添加一个文件夹并运行另一个应用程序。 如何递归添加
\folder
folder\*.*
\subfolder1
subfolder1\*.*
\subfolder2
subfolder2\*.*
从我的主机到我的图像?
【问题讨论】:
你能在新文件中构建一个派生图像FROM
原始图像COPY
ing吗?还是在启动容器时使用绑定挂载?
同样的问题再次***.com/questions/29939419/…
再一次***.com/questions/22049212/…
【参考方案1】:
你可以使用docker cp:
docker cp 实用程序将 SRC_PATH 的内容复制到 DEST_PATH。您可以从容器的文件系统复制到本地机器,反之亦然,从本地文件系统复制到容器。
docker cp /path/to/dir mycontainer:/path/in/container/
cp 命令的行为类似于 Unix cp -a 命令,在目录中递归复制并尽可能保留权限。
此外,如文档中所述,如果这不可行,您可以使用以下 tar 的一些技巧。
tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i CONTAINER tar Cxf DEST_PATH -
【讨论】:
您以这种方式所做的任何更改都将在容器退出后立即丢失。 不,如果你使用提交。docker commit
会创建一个映像,当一年内有强制性的关键安全更新时,您将无法重新创建该映像。这根本不是最佳实践。
是的,没错。但这仍然是可能的。我个人也不会这样做。我仍然看到它的用例。也许是为了保存对业务至关重要的东西,因为有人一开始就没有遵循最佳实践。也许 docker CP 也可以用于调试和开发。通常我会使用它从容器中获取默认配置,但是,嘿,你永远不知道人们在做什么。
我运行 docker,它处于活动状态,>docker ps 显示它,然后尝试运行 PS D:\> docker cp d:/mc myxxx:c:/app/mc/ 来自错误响应守护进程:不支持针对正在运行的 Hyper-V 容器的文件系统操作以上是关于如何将文件添加到现有的 docker 镜像? [复制]的主要内容,如果未能解决你的问题,请参考以下文章