Docker Community Forums

Share and learn in the Docker community.

Checkpoint/restore udp socket issue?


(Ffan168) #1

I am experimenting with docker checkpoint feature. I have a udp client program running in a container. It was able to run the container and send messages to an udp server outside of the container. I then took a checkpoint of the container. It seems to be OK by looking at the log. But when I tried to restore back to the checkpoint. The udp client program stopped sending messages. It didn’t have any obvious error in the restore log.

My system configuration is as follows:
Ubuntu 16.04.1
CRIU 3.10
Docker client 17.03.2ce

The following are the commands that I issued to create the problem.

docker run --network=host --name udp_c_static_C udp_c_static
docker checkpoint create --leave-running udp_c_static_C checkpoint1
docker stop udp_c_static_C
docker start --checkpoint checkpoint1 udp_c_static_C

Here are some tail-end of the logs from checkpoint and restore:
checkpoint log

(00.445760) cg: Writing CG image
(00.445821) unix: Dumping external sockets
(00.445855) Writing image inventory (version 1)
(00.445899) Running post-dump scripts
(00.445902) RPC
(00.446270) Unlock network
(00.446278) Unfreezing tasks into 1
(00.446281) Unseizing 4471 into 1
(00.446400) Writing stats
(00.446459) Dumping finished successfully

restore log

(00.264250) 4783 (native) is going to execute the syscall 15, required is 15
(00.264285) 4783 was stopped
(00.264334) 4783 was trapped
(00.264340) 4783 (native) is going to execute the syscall 11, required is 11
(00.264377) 4783 was stopped
(00.264384) Running pre-resume scripts
(00.264387) RPC
(00.285316) Writing stats
(00.285365) Running post-resume scripts
(00.285368) RPC

I am new to docker, any help will be greatly appreciated.

additional information

“docker ps” indicates that it is running after I restore it. But when I do a “ps all” from a shell, it doesn’t show “docker” as a process which it did prior to the “docker stop” & “docker start -checkpoint …” commands.

Also, the container was built with SCRATCH, and only the udp_c_static program was in it. And udp_c_static was built with statically linked libraries.