[CRIU] Docker Live migration using CRIU

Pavel Emelyanov xemul at parallels.com
Wed Jan 13 05:16:30 PST 2016


On 01/04/2016 03:54 PM, Vijay Kilari wrote:
> Hi Hui,
> 
> On Mon, Jan 4, 2016 at 2:55 PM, Hui Kang <hkang.sunysb at gmail.com> wrote:
>> Hi, Vijay,
>> I just realized that the C/R feature of docker is under extensive
>> development and discussion these days. So it has not been an upstream
>> experimental feature.
>>
>> As of now, will you be able to use the docker version provided in the
>> docker to try the migration feature?
>>
>> https://github.com/xemul/p.haul/blob/master/test/docker/HOWTO
> 
>  Here it was mentioned to use aufs as storage driver. Is it mandatory for
> live migration?

I wouldn't say it is, but Hui can correct me. AFAIK Aufs is going to be dropped
from Docker at all since overlayfs obsoletes it.

-- Pavel

>>
>> - Hui
>>
>> On Mon, Jan 4, 2016 at 4:35 PM, Vijay Kilari <vijay.kilari at gmail.com> wrote:
>>> Hi Hui,
>>>
>>>   I am trying to migrate on the same machine (arm64) . I am running
>>> p.haul service and client on
>>> the same machine.
>>>
>>> After copying pycriu from to /usr/local/lib/python-2.7/ from criu path
>>> and installing
>>> missing python packages like protobuf, ipaddr I finally face below error
>>>
>>> The p_haul_docker.py is now looking for "containers" directory inside
>>> /var/lib/docker/.
>>>
>>> However there is no such directory called containers. Any idea?
>>>
>>> SRC:
>>> -------
>>>
>>> ubuntu at ubuntu:~/criu/p.haul$ sudo ./p.haul-wrap client 0.0.0.0 docker
>>> 02e2ad5ab840
>>> Establish connection...
>>> Exec p.haul: ./p.haul docker 02e2ad5ab840 --to 0.0.0.0 --fdrpc 3 --fdmem 4
>>>
>>> 07:23:10.195: Starting p.haul
>>> 07:23:10.196: Use existing connections, fdrpc=3 fdmem=4 fdfs=None
>>> 07:23:10.196: Setting up local
>>> 07:23:10.197: `- Passing (ctl:7, data:6) pair to CRIU
>>> 07:23:10.200: [Errno 2] No such file or directory: '/var/lib/docker/containers'
>>> Traceback (most recent call last):
>>>   File "./p.haul", line 45, in <module>
>>>     worker = phaul.iters.phaul_iter_worker(ph_type, connection)
>>>   File "/home/ubuntu/criu/p.haul/phaul/iters.py", line 39, in __init__
>>>     self.htype = htype.get_src(p_type)
>>>   File "/home/ubuntu/criu/p.haul/phaul/htype.py", line 35, in get_src
>>>     ht.init_src()
>>>   File "/home/ubuntu/criu/p.haul/phaul/p_haul_docker.py", line 37, in init_src
>>>     self.full_ctid = self.get_full_ctid()
>>>   File "/home/ubuntu/criu/p.haul/phaul/p_haul_docker.py", line 78, in
>>> get_full_ctid
>>>     dir_name_list = os.listdir(os.path.join(docker_dir, "containers"))
>>> OSError: [Errno 2] No such file or directory: '/var/lib/docker/containers'
>>> Error (cr-service.c:879): Can't recv request: Connection reset by peer
>>> ubuntu at ubuntu:~/criu/p.haul$
>>>
>>> ubuntu at ubuntu:~/criu/p.haul$ sudo ls /var/lib/docker/
>>> 0.0          graph  init       network              tmp    vfs
>>> devicemapper  image  linkgraph.db  repositories-devicemapper  trust  volumes
>>>
>>>
>>> On Mon, Jan 4, 2016 at 11:33 AM, Vijay Kilari <vijay.kilari at gmail.com> wrote:
>>>> Hi Hiu,
>>>>
>>>> I am using latest docker with checkpoint and restore feature enabled.
>>>> Using this docker version, I could do docker native checkpoint/restore
>>>> successfully.
>>>>
>>>> I tried p.haul as described in the link given by you. When p.haul
>>>> service is launched,
>>>> p.haul could not connect. p.haul keeps waiting for connection..
>>>> See below log
>>>>
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>> ubuntu at ubuntu:~/docker$ criu --version
>>>> Version: 1.8
>>>> GitID: v1.8-193-g6aede7f
>>>>
>>>> ubuntu at ubuntu:~/criu/p.haul$ ps -eaf | grep criu
>>>> ubuntu   25624     1  0 05:46 ?        00:00:00 criu service -o
>>>> _local_/log -v4 --daemon
>>>> ubuntu   25718 25524  0 05:56 pts/2    00:00:00 grep --color=auto criu
>>>>
>>>> ubuntu at ubuntu:~/criu/p.haul$ ps -eaf | grep docker
>>>> root       915     1  0  2015 ?        00:15:28 /usr/bin/docker daemon -H fd://
>>>> ubuntu   25720 25524  0 05:56 pts/2    00:00:00 grep --color=auto docker
>>>>
>>>> ubuntu at ubuntu:~/criu/p.haul$ sudo docker version
>>>> Client:
>>>>  Version:      1.10.0-dev
>>>>  API version:  1.22
>>>>  Go version:   go1.5.2
>>>>  Git commit:   66581cd-dirty
>>>>  Built:        Thu Dec 17 09:07:33 2015
>>>>  OS/Arch:      linux/arm64
>>>>  Experimental: true
>>>>
>>>> Server:
>>>>  Version:      1.10.0-dev
>>>>  API version:  1.22
>>>>  Go version:   go1.5.2
>>>>  Git commit:   66581cd-dirty
>>>>  Built:        Thu Dec 17 09:07:33 2015
>>>>  OS/Arch:      linux/arm64
>>>>  Experimental: true
>>>>
>>>> ubuntu at ubuntu:~/criu/p.haul$ ./p.haul-wrap service
>>>> Waiting for connection...
>>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>
>>>> On Thu, Dec 31, 2015 at 12:00 PM, Hui Kang <hkang.sunysb at gmail.com> wrote:
>>>>> Hi, Vijay,
>>>>> Please check out this
>>>>> https://github.com/xemul/p.haul/blob/master/test/docker/HOWTO
>>>>> Please note that you may need a later version of docker binary.
>>>>>
>>>>> - Hui
>>>>>
>>>>> On Thu, Dec 31, 2015 at 2:20 PM, Vijay Kilari <vijay.kilari at gmail.com> wrote:
>>>>>> Hi,
>>>>>>
>>>>>>    What is the current status of docker live migration using CRIU?.
>>>>>> Is there any wiki/blog which provides steps for doing live migration of docker?
>>>>>>
>>>>>> Regards
>>>>>> Vijay
>>>>>> _______________________________________________
>>>>>> CRIU mailing list
>>>>>> CRIU at openvz.org
>>>>>> https://lists.openvz.org/mailman/listinfo/criu
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu
> .
> 



More information about the CRIU mailing list