Docker-无法检查点容器



我正在尝试在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

最新更新