Ubuntu环境下Docker拉取镜像报错:archive/tar: invalid tar header
解决Docker拉取镜像时"archive/tar: invalid tar header"报错的方案
问题场景
在Ubuntu系统执行sudo docker pull postgres:14时触发报错:
14: Pulling from library/postgres 3f9582a2cbe7: Extracting 31.41MB/31.41MB 0d9d08fc1a1a: Download complete ecae4ccb4d1b: Download complete e75693e0d7a5: Download complete 1b6d5aead1a8: Download complete f2aa67d9a6b2: Download complete 7a3ec0371e36: Download complete 704d9d1b662d: Download complete 54524e056363: Download complete 25bf4c84ca22: Download complete 40b6f9f7a0cb: Download complete 78ab4b71d139: Download complete abd467968b89: Download complete failed to register layer: Error processing tar file(exit status 1): archive/tar: invalid tar header
Docker版本:Docker version 23.0.1, build a5ee5b1
已尝试无效操作:
- 删除所有Docker镜像并重启Docker服务
- 完全卸载并重新安装Docker
- 拉取
ubuntu:latest成功,但拉取dlopezmadrid/pcl-docker:latest仍触发相同报错
可行解决建议
1. 检查磁盘状态与存储空间
- 执行
df -h查看磁盘剩余空间,确保Docker存储目录(默认/var/lib/docker)所在分区有足够空间 - 执行
fsck检查磁盘是否存在坏道或文件系统错误(需先卸载对应分区,操作前做好数据备份)
2. 切换Docker存储驱动
当前Docker版本默认使用overlay2驱动,部分环境下可能出现兼容性问题,尝试切换到devicemapper:
- 停止Docker服务:
sudo systemctl stop docker - 备份原存储目录:
sudo mv /var/lib/docker /var/lib/docker.bak - 创建新配置文件
/etc/docker/daemon.json,添加内容:
{ "storage-driver": "devicemapper" }
- 启动Docker服务:
sudo systemctl start docker - 重新尝试拉取镜像
3. 清理Docker缓存与临时文件
- 清理Docker构建缓存:
sudo docker system prune -af - 删除Docker临时文件:
sudo rm -rf /var/lib/docker/tmp/* - 重启Docker服务后重试拉取
4. 检查网络代理与镜像源
- 如果使用了代理,确认代理配置未篡改下载的tar包内容,可临时关闭代理测试
- 切换到国内镜像源,修改
/etc/docker/daemon.json添加:
{ "registry-mirrors": ["https://hub-mirror.c.163.com"] }
修改后执行sudo systemctl restart docker再尝试拉取
5. 升级系统内核
部分旧内核与Docker新版本存在兼容性问题,执行以下命令升级内核:
sudo apt update && sudo apt install linux-generic-hwe-22.04
升级完成后重启系统,再测试镜像拉取
内容的提问来源于stack exchange,提问作者Ashwin
相关产品推荐
相关产品推荐

