Windows 上的 Docker 问题 [version `GLIBC_2.32' not found] [version `GLIBC_2.34' not found]

回答 3 浏览 1052 2023-12-11

我正在遵循使用 WSL2 在 Windows 上安装 Docker 的初学者教程。

这是本课程的第一个教程/讲座之一。

https://www.udemy.com/course/docker-and-kubernetes-the-complete-guide/

到目前为止我已经按照指示做了所有事情。要验证我的 docker 设置是否正常,
最后教程告诉我,在我的默认的 WSL Linux Distro(也就是 Ubuntu,就是这么来的)
中运行docker

所以我运行了docker,但出现了这个错误。

/mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli)

/mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli)

尝试修复错误,我升级了所有可升级的 Linux 软件包。
还是没有运气。好像说它需要比我的更高版本的 GLIBC。
而且,我认为没有办法进一步升级我的 GLIBC 版本。正确的?

我应该怎么做才能解决这个问题?

root@LAPTOP1:/mnt/c/Users/user01# docker
/mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli)
/mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /mnt/wsl/docker-desktop/cli-tools/usr/bin/com.docker.cli)
root@LAPTOP1:/mnt/c/Users/user01# ldd --version
ldd (Ubuntu GLIBC 2.31-0ubuntu9.14) 2.31
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
root@LAPTOP1:/mnt/c/Users/user01# apt-cache policy libc6
libc6:
  Installed: 2.31-0ubuntu9.14
  Candidate: 2.31-0ubuntu9.14
  Version table:
 *** 2.31-0ubuntu9.14 500
        500 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
        100 /var/lib/dpkg/status
     2.31-0ubuntu9 500
        500 http://archive.ubuntu.com/ubuntu focal/main amd64 Packages
root@LAPTOP1:/mnt/c/Users/user01# apt-get install libc6
Reading package lists... Done
Building dependency tree
Reading state information... Done
libc6 is already the newest version (2.31-0ubuntu9.14).
0 upgraded, 0 newly installed, 0 to remove and 11 not upgraded.
root@LAPTOP1:/mnt/c/Users/user01#


        

这些是我的发行版。

PS C:\Users\user01> wsl --list --verbose
  NAME                   STATE           VERSION
* Ubuntu                 Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

这是我的 WSL Ubuntu 版本。

root@LAPTOP1:/mnt/c/Users/user01# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:        20.04
Codename:       focal
peter.petrov 提问于2023-12-11
3 个回答
#1楼 已采纳
得票数 1

我按照此处给出的说明升级了我的 Ubuntu 版本。

https://askubuntu.com/a/1428481

现在我的版本是22.04.3 LTS

root@LAPTOP1:/mnt/c/Users/user01# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.3 LTS
Release:        22.04
Codename:       jammy
root@USLAP3XP7G63:/mnt/c/Users/user01#

    

看来解决了我的问题。现在,当我从 Ubuntu 命令提示符中运行 docker 时,我没有收到 GLIBC 错误。

我不知道为什么默认情况下 WSL2 不直接安装这个版本22.04.3 LTS。不确定稍后必须手动升级它有什么意义。

peter.petrov 提问于2023-12-12
选择不同的版本只是选择与不同的软件集 ABI 不兼容。它修复了与您的特定工具的兼容性,但它不是通用的“一切总是有效”按钮。 (一般来说,Linux 是一个生态系统,人们被认为拥有编译器,并且能够重新编译软件以使其与本地发行版二进制兼容 - 与 Windows 不同,Windows 中所有内容都以二进制形式分发,因此 ABI 兼容性,而不是源兼容性,至关重要)。Charles Duffy 2023-12-12
@CharlesDuffy 是的,好的……但请记住我的上下文。我正在遵循一个简单的教程来让 Docker 在 Windows/WSL 上运行。旧版本 20.04.6 无法正常运行。在新版本 22.04.3 中,它似乎运行正常。所以就我而言,我似乎需要更新版本的 Ubuntu。peter.petrov 2023-12-12
另一点上下文信息:20.04 是 LTS 版本,这意味着它计划提供长期支持;直到 2025 年,它仍然会定期获得安全补丁,并且为扩展支持付费的客户将继续获得它,直到 2030 年之后 - 因此,对于任何不想不断加速的虚拟机映像或安装程序来说,这是一个非常合理的选择;这意味着 Canonical 为 Ubuntu 20.04 构建的任何 Docker 软件包同样将在 2025 年之前获得安全更新;您的教程告诉您使用非 Canonical 的 Docker 包,这是该教程的一个问题。Charles Duffy 2023-12-12
也就是说:Docker本身可以在Ubuntu 20.04上运行得很好;具体来说,您的教程告诉您安装的 Docker 副本有问题。Charles Duffy 2023-12-12
(我怀疑使用 Docker Desktop 而不是 OSS Docker 是教程告诉您不要使用 Ubuntu 支持的构建的原因,但这是一个坏主意 - 除其他外,商业支持协议Docker 非常昂贵,因此即使您的公司没有为仅供个人使用的免费子集支付商业许可证,学习您可以使用的工具也是很有意义的——并且我建议不要使用任何以下教程会把你送上那条路)Charles Duffy 2023-12-12
#2楼
得票数 1

这个问题应该在下一个补丁版本(本周或本月)中修复 - 猜测是 4.26.1 或类似版本。 在这里查看一些详细信息: https://github.com/docker/for-win/issues /13824

作为将 WSL2 发行版升级到 22.04 的另一种解决方法,您可以尝试使用 PowerShell 中的 docker 命令。图像和容器的存储是共享的,因此稍后您应该能够从 WSL2 继续您的工作

MichalTheDweller 提问于2023-12-12
#3楼
得票数 -1

只需输入终端:

sudo do-release-upgrade
S1AnGeR 提问于2023-12-12