按照管理容器中的数据官方指南中的示例,假设有一个数据专用容器是通过
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
我理解医生们说,这不影响消费容器,因为卷实际上仍然可用:
“要从磁盘中删除卷,必须根据显式调用docker ,这是引用卷的最后一个容器。”
因此,这与unlink()
系统调用是相当的。数据卷仍然可用,处于“待定”状态。对于“挂起”,我的意思是这个准确的卷不能再通过使用--volumes-from
绑定到其他容器了。就unlink()
类推而言,再也没有名字可以访问数据了。
,我的问题是:是否有一种方法可以基于这个未决卷重新创建一个数据专用容器,以便它可以通过--volumes-from
再次包含?或者这样一个“待定”的卷被谴责了,也就是说一旦最后一个消费者停止,数据就会消失?
发布于 2015-06-10 13:35:58
使用docker inspect --format="{{.Volumes}}" <Container ID>
可以确定卷在基础主机上的位置。
当使用者容器仍在运行时,您可以在主机上将卷的内容复制到另一个位置,并根据该新位置的内容创建一个新的数据容器。
缺点是,在复制结束到停止使用者容器之间的时间内,可能会对原始卷进行进一步的更改(这将导致删除原始卷)。
这并不理想,但我可以从中看出这是可能的。
https://stackoverflow.com/questions/30767018
复制