退出状态容器的卷可用性及跨容器卷使用问题咨询
退出状态的容器仍可访问其关联的卷吗?
当然可以!容器的退出状态完全不影响它所关联的卷(包括绑定挂载和Docker管理的卷)的可用性——只要卷本身没有被手动删除,就可以被其他容器复用。
针对你给出的docker-compose.yml示例,我们可以分两种卷类型来看:
1. 绑定挂载(/tmp/cache:/cache)
这种是把宿主机的/tmp/cache目录直接映射到容器内的/cache路径。宿主机上的目录本身独立于容器存在,不管原容器是运行还是退出,你都可以在新容器里直接用同样的挂载指令复用它:
docker run -v /tmp/cache:/your-target-path <your-image>
2. 匿名卷(/build)
这个是Docker自动创建的匿名卷(没有指定宿主机路径,只给了容器内路径),即使原容器退出了,这个卷依然保存在Docker的存储目录里。你有两种方式复用它:
方式一:通过--volumes-from直接继承原容器的所有卷
用这个参数可以让新容器挂载原容器的所有卷(包括上面的/cache绑定挂载和/build匿名卷):
docker run --volumes-from dev_cache_1 <your-image>
方式二:找到匿名卷的ID后单独挂载
先通过docker inspect查看原容器的挂载信息,找到/build对应的卷名:
docker inspect dev_cache_1
在输出的Mounts数组里,找到Destination为/build的条目,复制它的Name字段(一串随机字符串)。然后在新容器里挂载这个卷:
docker run -v <卷名>:/your-target-path <your-image>
注意事项
如果之后你删除了原容器(docker rm dev_cache_1),默认情况下匿名卷不会被自动删除——只有当你删除容器时加上-v参数(docker rm -v dev_cache_1),Docker才会同时清理掉它关联的匿名卷。所以只要你没主动删除卷,就可以一直复用它。
内容的提问来源于stack exchange,提问作者overexchange
相关产品推荐
相关产品推荐

