星辰大海诗与远方 2021-03-19 09:50 采纳率: 0%
浏览 105

CRIU checkpoint失败:Cannot checkpoint container

测试的环境及步骤如下:

[root ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.9.2009 (Core)
Release:	7.9.2009
Codename:	Core
[root ~]# uname -a
Linux agent6 5.3.18-3-xvp #1 SMP XVP 5.3.18-3 (Sat, 18 Apr 2020 19:18:14 +0800) x86_64 x86_64 x86_64 GNU/Linux
[root ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.9
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        9d988398e7
 Built:             Fri May 15 00:25:27 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:25:42 2020
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[root ~]# criu -V

Version: 3.15
GitID: v3.14-333-gd49ace9

[root ~]# criu check
Looks good.

[root ~]# criu check --all
Warn  (criu/cr-check.c:1230): clone3() with set_tid not supported
Error (criu/cr-check.c:1272): Time namespaces are not supported
Looks good but some kernel features are missing
which, depending on your process tree, may cause
dump or restore failure.
[root ~]# cat /etc/docker/daemon.json
{
	"insecure-registry":["192.168.10.17:443"],
	"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] ,
	"experimental": true

}

[root ~]# docker run -d --name track --security-opt seccomp:unconfined busybox /bin/sh -c 'i=0; while true; do echo $i;  i=$(expr "$i"  + 1);  sleep 1;  done'
12fe0d9dfcacd222543a9f7ca838560a1277a748b00496442d0c55aa319d05a0
[root ~]# docker checkpoint create track checkpoint-track
Error response from daemon: Cannot checkpoint container track: runc did not terminate sucessfully: criu failed: type NOTIFY errno 0 path= /run/containerd/io.containerd.runtime.v1.linux/moby/12fe0d9dfcacd222543a9f7ca838560a1277a748b00496442d0c55aa319d05a0/criu-dump.log: unknown

其中,criu check --all的时候有一个错误,但是在我的另一台电脑上(3.10内核)也出现了这个错误,但是并没有影响后面的checkpoint。请诸位大佬指教一下,在这个bug卡了好久了。

部署容器的例子是参考的CRIU官方的例子:https://criu.org/Docker

  • 写回答

2条回答 默认 最新

  • 你知我知皆知 2024-07-24 00:40
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    从您提供的信息来看,似乎在尝试使用criu工具检查和恢复容器状态时遇到了问题。根据您的描述,主要的问题在于criu工具无法正常启动或者终止容器,导致criu工具不能进行必要的检查或恢复操作。此外,您还报告了在criu工具运行过程中出现了一个错误日志文件,表明criu工具可能没有正确地处理一些特定的情况。

    为了进一步诊断问题并找到解决方案,您可以采取以下措施:

    1. 确认环境配置

      • 确保您的系统中已经安装了criu工具,并且criu配置文件(通常位于/etc/docker/daemon.json)被正确设置。
      • 检查criu工具是否支持当前的内核版本。
      • 确认您的docker镜像是否已编译为支持criu功能。
    2. 查看日志

      • 检查criu工具的日志文件,以了解其崩溃的原因。这有助于定位问题所在。
    3. 重启容器

      • 如果criu工具仍然出现问题,请尝试重新启动容器,看看问题是否解决。
    4. 查阅相关文档

      • 查阅criu工具的官方文档,了解如何调试和解决问题。
    5. 联系技术支持

      • 如果上述方法都无法解决问题,考虑联系criu工具的支持团队寻求帮助。

    由于涉及到内核模块的加载和卸载、以及网络通信等复杂问题,建议在实际操作前先仔细阅读相关的技术文档,确保自己的操作不会对系统的稳定性造成负面影响。如果您遇到其他问题,欢迎随时提问。

    评论

报告相同问题?