如何解决退出代码 139,以便在 WSL2 Ubuntu 的 docker 中运行图像 cloudera/quickstart?

问题描述

我在 Ubuntu 20.04 发行版中使用 WSL2,我尝试使用以下命令在 Docker 中创建一个容器:

docker run --hostname=quickstart.cloudera --privileged=true -it -v $PWD:/src --publish-all=true -p 8888:8888 -p 8080:8080 -p 7180:7180 cloudera/quickstart /usr/bin/docker-quickstart

当我运行这个命令时,下载开始时的重量约为 4.4 GB,(我认为这是因为我第一次运行这个容器),当下载结束时,我使用以下命令检查容器 docker ps -a 并且容器的状态为 Exited (139) 6 minutes ago,当检查我的图像列表时

    REPOSITORY            TAG       IMAGE ID       CREATED        SIZE
uracilo/hadoop        latest    902e5bb989ad   8 months ago   727MB
cloudera/quickstart   latest    4239cd2958c6   4 years ago    6.34GB

我认为镜像创建成功,但是当我尝试运行第一个命令时,我一直在状态中获取 Exited (139) 并且无法使用容器

显然,退出代码 139 是指系统或硬件(可能是 RAM)出现问题,但我不确定。我不知道这个问题是因为我在 ram 中使用 wsl 还是我的 8GB 不足以运行图像

有什么办法可以成功运行这个镜像吗?

解决方法

您需要在 Windows 的 %userprofile% 文件夹下创建一个名为 .wslconfig 的文件,并将以下几行复制到该文件中

    [wsl2]
    kernelCommandLine = vsyscall=emulate

然后重启你的 Docker 引擎。