Fer*_*enc 1 macos mongodb docker osx-elcapitan
我删除了我的mongo容器
docker rm myMongoDB
Run Code Online (Sandbox Code Playgroud)
我丢失了所有数据,还是可以恢复数据?如果是这样,怎么样?
当我尝试从图像中运行另一个容器时
docker run -p 27017:27017 -d mongo --name myMongo2
Run Code Online (Sandbox Code Playgroud)
它不会运行,它的STATUS说Exited (2) 8 seconds ago.
mongoDocker Hub上的官方映像(https://hub.docker.com/_/mongo/)定义了两个卷来存储Dockerfile中的数据.如果在运行容器时没有显式指定-v/ --volume选项,则Docker会为这些卷创建匿名(未命名)卷,并且这些卷可能仍然存在.找到容器最后使用的卷可能有点困难,因为它们没有名称.
要列出docker主机上仍然存在的所有卷,请使用;
docker volume ls
Run Code Online (Sandbox Code Playgroud)
哪个应该给你这样的东西;
DRIVER VOLUME NAME
local 9142c58ad5ac6d6e40ccd84096605f5393bf44ab7b5fe51edfa23cd1f8e13e4b
local 4ac8e34c11ac7955b9b79af10c113b870edd0869889d1005ee17e98e7c6c05f1
local da0b4a7a00c4b60c492599dabe1dbc501113ae4b2dd1811527384a5dc26cab13
local 81a40483ae00d72dcfa2117b3ae40f3fe79038544253e60b85a8d0efc8f3d139
Run Code Online (Sandbox Code Playgroud)
要查看卷中的内容,可以将其附加到临时容器中,并检查其中的内容.例如;
docker run -it -v 81a40483ae00d72dcfa2117b3ae40f3fe79038544253e60b85a8d0efc8f3d139:/volume-data ubuntu
Run Code Online (Sandbox Code Playgroud)
这将在新的ubuntu容器中启动交互式shell,并将卷81a40483ae00d72dcfa2117b3ae40f3fe79038544253e60b85a8d0efc8f3d139安装在/volume-data/容器内部.
然后,您可以进入该目录,并检查它是否是您要查找的卷:
root@08c11a34ed44:/# cd /volume-data/
root@08c11a34ed44:/volume-data# ls -la
Run Code Online (Sandbox Code Playgroud)
一旦你确定了哪些卷(根据Dockerfile,mongo映像使用两个),你就可以启动一个新的mongo容器,然后安装这些卷;
docker run -d --name mymongo \
-v 4ac8e34c11ac7955b9b79af10c113b870edd0869889d1005ee17e98e7c6c05f1:/data/db/ \
-v da0b4a7a00c4b60c492599dabe1dbc501113ae4b2dd1811527384a5dc26cab13:/data/configdb/ \
mongo
Run Code Online (Sandbox Code Playgroud)
我真的建议您阅读Docker Hub上mongo映像文档中的Where to Store Data部分,以防止丢失数据.
注意
我还注意到,您的最后一个命令放--name myMongo2 后的图像名称; 它应该在之前 mongo(图像名称).也是myMongo2无效的容器名称,因为不允许使用大写字符.
| 归档时间: |
|
| 查看次数: |
1016 次 |
| 最近记录: |