我正在尝试在BusyBox映像中使用检查点。首先,我创建了一个常规循环,然后打印数字。
docker run -d --name simple13 busybox /bin/sh -c "i=0; while true; do echo $i; i=$(expr $i + 1); sleep 1; done"
docker logs -f simple13
然后我尝试使用检查点,然后以下命令 -
docker checkpoint create simple13 checkpoint1
但是,它显示出这样的错误 -
Error response from daemon: Cannot checkpoint container simple13:
docker-runc did not terminate sucessfully: CRIU version check failed: exec:
"criu": executable file not found in $PATH path=
/var/run/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/2fd6f5b517
3fb75ee2793d50602506ee6bc97fcd49df93141846fec21f003be4/criu-dump.log: unknown
实验已经打开了。那么,您能告诉我我需要做什么才能正确使用检查点吗?谢谢。
λ docker version
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:05:22 2017
OS/Arch: windows/amd64
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:12:29 2017
OS/Arch: linux/amd64
Experimental: true
您的 bash变量扩展有一些问题。通过CMD
的方式将继续打印空线,而不是数字。查看最终将命令设置为容器的方式(结果是docker container inspect ...
输出的部分:
"Cmd": [
"/bin/sh",
"-c",
"i=0; while true; do echo ; i=1; sleep 1; done"
],
我更改了引号的使用和以下印刷数字:
docker run -d --name simple13 busybox /bin/sh -c 'i=0; while true; do echo "$i"; i=$(expr "$i" + 1); sleep 1; done'
注意Cmd
中CC_3中现在的差异:
"Cmd": [
"/bin/sh",
"-c",
"i=0; while true; do echo "$i"; i=$(expr "$i" + 1); sleep 1; done"
],
关于docker checkpoint create simple13 checkpoint1
错误:
对我来说,它在我使用后得到了解决:
sudo apt-get install criu
但我认为,它仍然无法正常工作。示例:
ubuntu@ubuntu:~$ docker run -d --name simple13 busybox /bin/sh -c 'i=0; while true; do echo "$i"; i=$(expr "$i" + 1); sleep 1; done'
1ffd1f30aec96e07ac7c229c581b7ccd5feb9d180602eeb663211189abc652e4
ubuntu@ubuntu:~$ docker logs simple13
0
1
2
3
ubuntu@ubuntu:~$ docker checkpoint create simple13 checkpoint1
checkpoint1
ubuntu@ubuntu:~$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ffd1f30aec9 busybox "/bin/sh -c 'i=0; wh…" 19 seconds ago Up 18 seconds simple13
ubuntu@ubuntu:~$ docker logs simple13
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
ubuntu@ubuntu:~$ docker checkpoint ls simple13
Error response from daemon: open /var/lib/docker/containers/1ffd1f30aec96e07ac7c229c581b7ccd5feb9d180602eeb663211189abc652e4/checkpoints/checkpoint1/config.json: no such file or directory