为什么Docker Compose的volumes配置仅填写/sessions一个参数
Docker Compose volumes 单路径配置解答
1. 配置合法性说明
这种仅写容器内绝对路径的写法完全符合Docker Compose规范,属于合法的卷配置类型:匿名卷(Anonymous Volume)。你之前了解的冒号分隔的格式是命名卷/绑定挂载的写法,和匿名卷是Docker支持的两种不同卷声明方式,不存在冲突。
2. 具体作用
你给出的示例中- /sessions的作用如下:
- Docker会自动在宿主机默认存储目录(通常为
/var/lib/docker/volumes/)生成一个随机ID命名的目录,和容器内部的/sessions路径做绑定映射 - phpMyAdmin运行时会将用户登录态、会话数据存储在容器内
/sessions路径下,配置匿名卷后,会话数据不会随着容器重启、销毁而丢失,避免用户反复重新登录 - 不需要手动提前创建宿主机目录或者命名卷,Docker会自动完成存储资源的分配
3. 匿名卷的注意事项
- 匿名卷以随机ID命名,不方便人工识别管理,如果你需要长期持久化数据且方便维护,更推荐使用命名卷写法:
phpmyadmin_sessions:/sessions - 执行
docker rm删除容器时默认不会删除关联的匿名卷,长期使用可能产生冗余数据占用磁盘,如需同步删除容器和关联匿名卷可以执行docker rm -v <容器ID/名称>
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

