gpt4 book ai didi

docker - 如何从docker容器中检索文件?

转载 作者:行者123 更新时间:2023-12-02 18:09:26 24 4
gpt4 key购买 nike

我有一个简单的 Dockerfile,它创建了一个 zip 文件,我正在尝试在它准备好后检索 zip 文件。我的 Dockerfile 看起来像这样:

FROM ubuntu

RUN apt-get update && apt-get install -y build-essentials gcc

ENTRYPOINT ["zip","-r","-9"]
CMD ["/lib64.zip", "/lib64"]

阅读完文档后,我觉得这样的事情应该可以做到,但我无法让它发挥作用。
docker build -t ubuntu-libs .
docker run -d --name ubuntu-libs --mount source=$(pwd)/,target=/lib64.zip ubuntu-libs

另一个问题:是否可以从命令行重命名 zip 文件?

编辑:

这与 duplicate question 不同在评论中提到,因为当他们使用时 cp要从正在运行的 Docker 容器中复制文件,我正在尝试在实例化时挂载一个目录。

最佳答案

有多种方法可以做到这一点。

使用 docker cp:

docker cp <container_hash>:/path/to/zip/file.zip /path/on/host/new_name.zip

使用 docker 卷:

正如您在问题中提出的那样,您还可以安装从容器到主机的路径。您可以通过指定挂载点在主机上的位置来执行此操作,也可以不指定挂载点的位置并让 docker 选择。这两条路径都需要不同的方法。

让 docker 选择主机挂载位置
docker volume create random_volume_name
docker run -d --name ubuntu-libs -v random_volume_name:<path/to/mount/in/container> ubuntu-libs

内容将位于您的主机上,在此处:
ls -l /var/lib/docker/volumes/random_volume_name/_data/ 

让我选择主机挂载位置
docker run -d --name ubuntu-libs -v <existing/mount/point/on/host>:<path/to/mount/in/container> ubuntu-libs

这将创建一个干净/空的位置,根据命令中定义的位置共享该位置。现在您需要修改 Dockerfile 以将工件复制到此路径,例如:
FROM ubuntu

RUN apt-get update && apt-get install -y build-essentials gcc

ENTRYPOINT ["zip","-r","-9"]
CMD ["sh", "-c", "/lib64.zip", "/lib64", "cp", "path/to/zip/file.zip", "<path/to/mount/in/container>"]

内容现在将位于您的主机上,在这里:
ls -l <existing/mount/point/on/host>

我必须从 here 向 @joaofnfernandes 大喊大叫,他解释得很好。

关于docker - 如何从docker容器中检索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56797152/

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