Docker 无法构建镜像,退出代码为 139

Yoh*_*nna 4 centos centos6 docker wsl-2

我正在尝试从 CentOS 6.9 构建图像。使用这个 Dockerfile:

FROM centos:6.9

RUN ls
Run Code Online (Sandbox Code Playgroud)

但它一直失败,退出代码为 139,输出如下:

$ docker build -t centos-6.9 .
[+] Building 1.1s (7/7) FINISHED
 => [internal] load build definition from Dockerfile                                                                                             0.0s 
 => => transferring dockerfile: 72B                                                                                                              0.0s 
 => [internal] load .dockerignore                                                                                                                0.0s 
 => => transferring context: 2B                                                                                                                  0.0s 
 => [internal] load metadata for docker.io/library/centos:6.9                                                                                    0.6s 
 => [internal] load build context                                                                                                                0.1s 
 => => transferring context: 72B                                                                                                                 0.0s 
 => CACHED [1/3] FROM docker.io/library/centos:6.9@sha256:6fff0a9edc920968351eb357c5b84016000fec6956e6d745f695e5a34f18ecd2                       0.0s 
 => [2/3] COPY . .                                                                                                                               0.0s 
 => ERROR [3/3] RUN ls                                                                                                                           0.3s 
------
 > [3/3] RUN ls:
------
executor failed running [/bin/sh -c ls]: exit code: 139
Run Code Online (Sandbox Code Playgroud)

我在跑:

  • Windows 10 企业版 2004
  • Docker桌面3.0.0

Yoh*_*nna 11

这似乎是 WSL 2 与较旧的基础映像的问题,而不是 docker 或映像本身的问题。

  1. 创建%userprofile%\.wslconfig文件。

  2. 添加以下内容:

[wsl2]
kernelCommandLine = vsyscall=emulate
Run Code Online (Sandbox Code Playgroud)
  1. 重新启动 WSL。wsl --shutdown

  2. 重新启动 Docker 桌面。

参考:

  1. https://github.com/microsoft/WSL/issues/4694#issuecomment-556095344
  2. https://github.com/docker/for-win/issues/7284#issuecomment-646910923
  3. https://github.com/microsoft/WSL/issues/4694#issuecomment-558335829