gpt4 book ai didi

docker - 删除仅数据容器后如何重新绑定(bind) docker 卷?

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

按照 Managing Data in Containers 官方指南中的示例进行操作,假设有一个仅通过数据创建的容器

docker create -v /data --name data-container image /bin/true

还假设至少有一个正在运行的消费者容器,使用在纯数据容器中创建的卷:
docker run -d --volumes-from data-container --name consumer-container image

现在考虑使用 -v 删除数据容器。在消费者仍在运行时切换:
docker rm -v data-container

我了解 the docs说这不会影响消费者容器,因为该卷实际上仍然可用:

"To delete the volume from disk, you must explicitly call docker rm -v against the last container with a reference to the volume."



所以,这相当于 unlink()系统调用。数据量保持可用,处于“挂起”状态。对于“待定”,我的意思是这个确切的卷不能再通过简单地使用 --volumes-from 绑定(bind)到其他容器。 .就 unlink() 而言类比,不再有可以访问数据的名称。

我的问题是:有没有办法根据这个待处理的卷重新创建一个纯数据容器,以便可以通过 --volumes-from 再次包含它?或者这样的“待处理”数量是否受到谴责,因为一旦最后一个消费者停止,数据就会消失?

最佳答案

可以使用 docker inspect --format="{{.Volumes}}" <Container ID> 确定卷在底层主机上的位置。 .

当消费者容器仍在运行时,您可以在主机上将卷的内容复制到另一个位置,并根据该新位置的内容创建一个新的数据容器。

不利的一面是,在副本结束和停止消费者容器之间的时间里,可能会向原始卷写入进一步的更改(这会导致删除原始卷)。

那时这并不理想,但这是我认为这是可能的一种方式。

关于docker - 删除仅数据容器后如何重新绑定(bind) docker 卷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30767018/

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