gpt4 book ai didi

docker - 在 docker 容器中持久化数据文件

转载 作者:行者123 更新时间:2023-12-02 18:32:48 27 4
gpt4 key购买 nike

这应该不难,但我想不通。我有一个正在运行的容器,并在 docker run 命令中使用了 -v/tester 。然后我执行 docker exec ti containername/bin/bash。然后,我使用 vi/tester/stayhere.txt 创建了一个名为/tester/stayhere.txt 的文件。然后我保存文件并验证它在那里。然后我执行 docker commit 并启动新图像,但 stayhere.txt 丢失了。我做错了什么?

最佳答案

当您使用 -v 在 docker 容器内安装卷时,它不被视为容器本身的一部分。这就是为什么当您提交更改时它会丢失。

根据 Docker 文档:

A data volume is a specially-designated directory within one or more containers that bypasses the Union File System.

和:

Volumes are initialized when a container is created. If the container’s base image contains data at the specified mount point, that existing data is copied into the new volume upon volume initialization.

这意味着,数据量存在于 Union Filesystem 之外,即使您删除该容器数据量仍然存在:

Data volumes are designed to persist data, independent of the container’s life cycle. Docker therefore never automatically delete volumes when you remove a container, nor will it “garbage collect” volumes that are no longer referenced by a container.

因此它们不是您的 docker commit 命令的一部分。

为了实现您想要的效果,您需要在图像未安装作为 docker 卷时将文件复制到图像中的相同路径。您可以使用 Dockerfile 或直接启动容器并更改文件系统然后提交。

下次当您使用卷启动容器时,您应该能够看到这些文件。

关于docker - 在 docker 容器中持久化数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633868/

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