VirtualBox中Ubuntu 20环境下docker-compose安装后版本查询报错的原因排查与解决方法
Docker-Compose 安装故障排查:错误原因与验证方法
为什么会出现这个错误?
你碰到的这个解压错误,根源基本是下载的docker-compose二进制文件损坏了。从错误日志里的incorrect data check(数据校验错误)和Failed to write all bytes(无法写入全部字节)就能看出来——要么是curl下载时网络波动导致文件没下全,要么是GitHub的安装包在传输过程中丢包了。
另外补充个小细节:你选的1.28.5是2021年的老版本,而Ubuntu 20.04默认自带的是Python 3.8,错误里提到的cpython-37m是Python 3.7的编译文件,版本不兼容也可能加剧这类解压失败的问题。
怎么修复并验证安装?
第一步:先删掉损坏的文件
先把已经下载的坏文件清理掉:
sudo rm /usr/local/bin/docker-compose
第二步:重新下载(推荐加重试机制或换兼容版本)
如果坚持用1.28.5,给curl加--retry参数,让它在下载失败时自动重试,保证文件完整性:
sudo curl -L --retry 3 "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
更推荐的是安装适配Ubuntu 20.04的新版本(比如v2.x系列,现在docker-compose已经整合到Docker CLI里,也可以直接用docker compose命令),比如安装v2.20.2:
sudo curl -L --retry 3 "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
第三步:重新添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
如何确认docker-compose已经正确安装?
可以通过这几个方法验证:
- 版本校验:执行
docker-compose --version(v2.x版本也可以用docker compose version),如果能正常返回类似docker-compose version 1.28.5, build c4eb3a1f的版本信息,说明安装成功。 - 文件完整性校验:对比官方提供的SHA256哈希值。比如1.28.5的Linux x86_64版本校验值是
1a40c75d34f50bf44e4971e1f49b860f58a54a4c58a57c68b0b5267a72f3ad6b,执行以下命令:
sha256sum /usr/local/bin/docker-compose
把输出的哈希值和官方发布页的对应值对比,完全一致就说明文件没问题。
- 功能测试:找一个简单的
docker-compose.yml示例(比如启动一个Nginx容器),执行docker-compose up -d,如果能正常拉起容器,并且docker-compose ps能看到容器状态正常,就说明功能正常。
内容的提问来源于stack exchange,提问作者John




