docker - 如何强制 docker compose 重新创建手动删除的卷?
问题描述
docker-compose.yml
包含一个卷定义和一个使用它的服务。
#(This is a reduced but representative example)
services:
mongo:
image: mongo:3.6.11
...
volumes:
- "mongodb:/data/db/"
volumes:
mongodb:
driver: local
driver_opts:
type: "none"
o: "bind"
device: "$PWD/.storage/mongodb"
我已经删除了整个.storage/mongodb
目录,想强制下一个docker-compose up
不重用任何卷。
相反,我收到了一个错误:docker 丢失了它的卷数据。
Creating mongo ... error
ERROR: for mongo Cannot create container for service mongo: failed to mount local volume: mount <...>/.storage/mongodb:/var/lib/docker/volumes/mongodb/_data, flags: 0x1000: no such file or directory
我如何尝试解决这个问题:
docker-build up --build --force-recreate
. 容器的构建和重启不起作用。docker volume ls -q | while read id; do docker volume rm "$id"; done
. 删除卷似乎也没有帮助。
我假设 docker 能够从删除的卷数据中恢复,因为第一次docker-compose up
运行时没有初始化.storage
目录。
基本上,我想docker-compose up
工作。
理解这个问题也很棒。
期待您的帮助!
解决方案
您是否尝试过 docker-compose up 与 -V 选项?
-V, --renew-anon-volumes Recreate anonymous volumes instead of retrieving
data from the previous containers.
推荐阅读
- python - 用于 75K 数据包/秒负载下的实时应用程序的 python 网络嗅探器
- python - 是什么导致了错误:Kivy 中的“警告,在下一帧之前完成了太多迭代”?
- arrays - 反应redux如何从状态数组中删除对象
- c# - 我在 C# 中遇到问题,当我尝试用黑色填充整个 8x8px .bmp 文件时,它什么也没做,也没有错误
- typescript - 键入'T | undefined' 不可分配给类型 'T'。'T' 可以用与 'T | 无关的任意类型实例化。不明确的'
- php - 如何区分 Laravel 中没有数据库记录和没有过滤的数据库记录?
- xml - 微软 IIS 配置标签是否区分大小写?
- python - 具有特定模式的 Python 文本到数据框
- python - 如何抑制 Interactive Broker 错误警告 Jupyter、Python
- asp.net-mvc - .Net 重定向将视图返回给 api