--volumes-from 继承什么
新容器可以通过 --volumes-from 直接继承另一个容器声明的全部卷(含匿名卷):不需要知道卷名就能拿到同一份数据。备份场景很常用:挂上目标容器的卷之后,另一个容器把数据打包出去。
基本信息
| 语法 | --volumes-from 容器名[:ro] |
|---|---|
| 特点 | 按源容器的卷声明整体复刻挂载 |
| 常见用途 | 备份、迁移、临时排查 |
| 只读挂载 | 加 :ro 后缀 |
| 注意 | 继承的是挂载配置而非数据快照 |
典型使用场景
- 备份数据库容器的数据卷:挂上后在另一容器里打包
- 临时排查容器数据:不改动源容器的情况下读取
- 迁移数据到新卷时先整体挂载再复制
- 给只读工具容器提供与其他容器相同的数据视图
- 验证卷内容是否正确落盘
继承与备份
继承与备份
docker run -d --name db -v pgdata:/var/lib/postgresql/data postgres:16-alpine
docker run --rm --volumes-from db alpine ls /var/lib/postgresql/data
docker run --rm --volumes-from db:ro alpine du -sh /var/lib/postgresql/data
docker run --rm --volumes-from db -v "$PWD:/backup" \
alpine tar czf /backup/db.tgz -C /var/lib/postgresql data关注点
| 关注点 | 说明 | 注意 |
|---|---|---|
| 继承范围 | 源容器声明的全部卷 | 包括匿名卷 |
| 只读后缀 | 挂载为只读 | 适合备份与核对 |
| 数据一致性 | 读取的是实时数据 | 运行中的写入会同时可见 |
| 生命周期 | 与源容器声明绑定 | 源容器删除后信息可能丢失 |
备份场景非常常用:挂上目标容器的卷之后,另一个容器把目录打包即可。
源容器被删除并不必然删除卷,但卷名信息会丢失,重要数据应改用显式具名卷。
继承的是挂载配置而非数据快照,源容器运行中的写入同样会反映到新容器。
只读挂载适合备份与核对场景,能避免误改源数据。
需要长期稳定的数据管理时,用显式具名卷并在编排里声明,比依赖容器继承更清晰。
只读挂载后写入会直接失败,比事后检查更能避免误操作,备份用途的容器一律建议加上只读后缀。