WSL2 Ubuntu18中已安装criu但docker checkpoint提示找不到的问题
问题解决:WSL2中Docker Checkpoint提示CRIU找不到
核心原因
你在WSL中安装的CRIU无法被Docker Desktop的containerd runtime访问——因为Docker Desktop的容器实际运行在Windows侧的轻量虚拟机中,而非WSL环境内部,runc执行时的PATH不包含WSL里的/usr/sbin路径。
解决方案:切换到WSL内部的Docker引擎
放弃Docker Desktop的跨WSL集成,在Ubuntu 18.04中单独安装Docker CE,让容器直接运行在WSL环境内,这样runc就能调用本地安装的CRIU:
禁用Docker Desktop的WSL集成
打开Docker Desktop设置 → 「Resources」→「WSL Integration」,关闭对应Ubuntu 18.04发行版的集成开关,重启Docker Desktop生效。在WSL Ubuntu 18.04中安装Docker CE
执行以下命令:# 卸载旧版本Docker(如果有) sudo apt-get remove docker docker-engine docker.io containerd runc # 设置Docker官方源 sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker CE sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 将当前用户加入docker组(避免每次用sudo) sudo usermod -aG docker $USER重启WSL并验证
退出WSL终端,重新打开后启动Docker服务:sudo systemctl start docker sudo systemctl enable docker # 设置开机自启验证Docker运行正常:
docker run hello-world,之后再执行你之前的checkpoint命令即可正常调用CRIU。
补充说明
如果必须使用Docker Desktop,需要将WSL中的/usr/sbin/criu复制到Windows侧containerd runtime能访问的路径,但该路径属于Docker Desktop的内部虚拟机,操作复杂且易随版本变化,因此优先推荐上述切换到WSL本地Docker引擎的方案。
内容的提问来源于stack exchange,提问作者cookie-LGO
相关产品推荐
相关产品推荐

