如何在 "apt-get install docker-ce" 上解决 "Hash Sum Mismatch"?

How do I solve "Hash Sum Mismatch" on "apt-get install docker-ce"?

希望你一切都好!

这是我关于堆栈溢出的第一个问题,所以如果我遗漏了什么,请告诉我,我很乐意更新我的问题。

所以,总结一下我的问题,我正在尝试按照 Docker-Engine Installation 的官方步骤在 Ubuntu 18.04 VM 上安装 Docker-ce,但出现错误"Hash Sum Mismatch" 当 运行 命令 "sudo apt-get install docker-ce docker-ce-cli containerd.io".

我按照官方步骤进行了几次,到目前为止我已经尝试了以下操作:

1)以下命令,后面是官方安装步骤

apt-get clean
rm -rf /var/lib/apt/lists/*
apt-get clean
apt-get update
apt-get upgrade

2) 创建一个包含以下行的文件,放在“/etc/apt/apt.conf.d/99fixbadproxy”,然后是官方安装步骤

Acquire::http::Pipeline-Depth 0;
Acquire::http::No-Cache true;
Acquire::BrokenProxy    true;

3)安装其他版本的docker-ce使用以下命令

sudo apt-get install docker-ce 5:19.03.8~3-0~ubuntu-bionic
sudo apt-get install docker-ce 5:19.03.6~3-0~ubuntu-bionic
sudo apt-get install docker-ce 5:18.09.9~3-0~ubuntu-bionic

4) 我尝试通过在以下命令的 "stable" 一词后添加 "nightly" 或 "test" 或两者来安装不同的存储库(我认为它们被称为存储库)

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

我想差不多就是这样了。我确实尝试过其他东西,但不幸的是我不记得它们了,因为我已经在这个问题上工作了很长一段时间了。

虽然我没有尝试全新安装 Ubuntu 18.04。

如果我的问题中有任何遗漏,请告诉我!

大家保重!

说明和解决方案:快速修复

此问题是由 Windows Hypervisor 平台引起的。这个问题暂时无法解决(据我所知)

不过,部分修复即将到来。我说“部分”是因为它涉及禁用平台(也称为“Hyper-V”),这可能会破坏您安装的其他虚拟化解决方案,因为这是手动启用的。无论如何,这里是如何禁用它并再次让您的 VM 运行ning,

  1. 关闭虚拟机。

  2. 按 Windows 徽标键 + X,然后按 A 以 运行 命令提示符(powershell)作为管理员。

  3. 类型 bcdedit /set hypervisorlaunchtype off

  4. 当您看到“操作成功完成”时,请重新启动您的 windows。重新启动后,启动您的 VM 和 update/upgrade.

对于仍然对此有疑问的任何人,我设法通过禁用 HyperV 使其正常工作(正如大多数人已经建议的那样)。但是,在我的设置中,使用上述方法禁用 HyperV 实际上并没有禁用 HyperV,因为我的 windows 机器将 HyperV 用于 CredentialGuard 和 Secure Boot,这两者都需要在 HyperV 实际完全禁用之前被禁用

如果提升的终端中的 运行 systeminfo.exe 显示 A hypervisor has been detected. Features required for Hyper-V will not be displayed,则 HyperV 未完全禁用。禁用凭据保护和安全启动并重新启动几次(在 运行 已经提到的所有禁用 HyperV 的命令之后)为我解决了所有问题。

仅供参考,如果 HyperV 已完全禁用,您应该会看到

Hyper-V Requirements:      VM Monitor Mode Extensions: Yes
                           Virtualization Enabled In Firmware: Yes
                           Second Level Address Translation: Yes
                           Data Execution Prevention Available: Yes

当 运行 systeminfo.exe