Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to move docker containers using device mapper to another machine without using docker commands

Tags:

docker

Here's the situation

After a reboot, docker was unable to restart due to a lack of space on the disk. Due to a lot of bad decisions, we're now left only with a copy of /var/lib/docker (so we're not able to run the docker that we would like to move to an other machine running the same OS/version of docker (1.8.3)

when we try to naively replace the /var/lib/docker by the old one, we got

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

I've been reading through this issue on docker https://github.com/docker/docker/issues/15721 but it does not seems helpful.

Is there's a known procedure to move things out ? or at least to mount the disk images to get the data out?

like image 291
allan.simon Avatar asked Feb 20 '16 07:02

allan.simon


2 Answers

workaround is - rm -rf /var/lib/docker & restart docker(sometimes host reboot needed)

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

like image 125
Rajaneesh Avatar answered Sep 30 '22 15:09

Rajaneesh


You can change the UUID for which docker is looking in /var/lib/docker/devicemapper/metadata/deviceset-metadata

this file contains on my system:

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

you should try to replace 4c799443-bf3d-4b95-a9df-dd86de235057 with the UUID docker is looking for.

like image 24
meeuw Avatar answered Sep 30 '22 13:09

meeuw