如何使用设备映射器将docker容器移动到另一台机器而不使用docker命令

时间:2016-02-20 07:53:26

标签: docker

情况

重启后,由于磁盘空间不足,docker无法重启。由于做出了很多错误的决定,我们现在只剩下/var/lib/docker的副本(因此我们无法运行我们希望迁移到docker的{​​{1}}其他机器运行相同的操作系统/版本的docker(1.8.3

当我们试图天真地用旧的/var/lib/docker取代时,我们得到了

Feb 20 08:06:33 example.com systemd[1]: Starting Docker Application Container Engine...
Feb 20 08:06:33 example.com docker[2164]: time="2016-02-20T08:06:33.111285635+01:00" level=error msg="[graphdriver] prior storage driver \"devicemapper\" failed: Base Device UUID verification failed. Possibly using a different thin pool then last invocation:exit status 2"
Feb 20 08:06:33 example.com docker[2164]: time="2016-02-20T08:06:33.111382676+01:00" level=fatal msg="Error starting daemon: error initializing graphdriver: Base Device UUID verification failed. Possibly using a different thin pool then last invocation:exit status 2"
Feb 20 08:06:33 example.com systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE

我在docker https://github.com/docker/docker/issues/15721上一直在阅读这个问题,但它似乎没有帮助。

是否有一个已知的程序将事情移出?或至少挂载磁盘映像以获取数据?

2 个答案:

答案 0 :(得分:1)

解决方法是 - rm -rf / var / lib / docker&重启docker(有时需要主机重启)

https://github.com/docker/docker/issues/23089

答案 1 :(得分:1)

您可以在/ var / lib / docker / devicemapper / metadata / deviceset-metadata

中更改docker正在查找的UUID

此文件包含在我的系统中:

{
    "BaseDeviceFilesystem": "xfs",
    "BaseDeviceUUID": "4c799443-bf3d-4b95-a9df-dd86de235057",
    "next_device_id": 1
}

你应该尝试用UUID码头工具替换4c799443-bf3d-4b95-a9df-dd86de235057。