Ubuntu中Docker服务Active: failed修复及容器镜像恢复求助
问题描述
云服务器跨数据中心迁移后Docker运行异常,无法查看容器与镜像,具体现象如下:
- 执行
sudo docker ps报错:
ubuntu@ubuntu-servername-server:~$ sudo docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
- 执行
systemctl status docker显示服务启动失败:
ubuntu@ubuntu-gardooon-server:~$ sudo systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since Sat 2022-09-10 16:29:10 UTC; 2 days ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 35714 (code=exited, status=1/FAILURE) Sep 10 16:29:08 ubuntu-gardooon-server systemd[1]: docker.service: Main process exited, code=exited, status=1/FAILURE Sep 10 16:29:08 ubuntu-gardooon-server systemd[1]: docker.service: Failed with result 'exit-code'. Sep 10 16:29:08 ubuntu-gardooon-server systemd[1]: Failed to start Docker Application Container Engine. Sep 10 16:29:10 ubuntu-gardooon-server systemd[1]: docker.service: Scheduled restart job, restart counter > Sep 10 16:29:10 ubuntu-gardooon-server systemd[1]: Stopped Docker Application Container Engine. Sep 10 16:29:10 ubuntu-gardooon-server systemd[1]: docker.service: Start request repeated too quickly. Sep 10 16:29:10 ubuntu-gardooon-server systemd[1]: docker.service: Failed with result 'exit-code'. Sep 10 16:29:10 ubuntu-gardooon-server systemd[1]: Failed to start Docker Application Container Engine.
- 当前环境版本:
ubuntu@ubuntu-gardooon-server:~$ docker --version Docker version 20.10.7, build 20.10.7-0ubuntu5~20.04.2 ubuntu@ubuntu-gardooon-server:~$ docker-compose --version docker-compose version 1.29.2, build 5becea4c
- 已尝试操作:误删除
/var/lib/docker目录,执行sudo apt install docker重装提示已是最新版本,但服务仍启动失败。
解决方案
一、容器与镜像恢复可能性
/var/lib/docker是Docker存储容器、镜像、卷等核心数据的目录,若删除后无备份,容器与镜像无法恢复。仅在以下场景可尝试恢复:
- 镜像已推送到远程仓库:从仓库重新拉取
- 有容器/镜像的本地备份文件(如
docker export/docker save生成的包):导入恢复 - 服务器迁移前有快照/完整备份:回滚快照后重新迁移
二、Docker服务修复与重建步骤
步骤1:彻底卸载现有Docker环境
普通重装无法覆盖残留配置,需彻底清理:
# 停止所有相关服务 sudo systemctl stop docker docker.socket containerd # 卸载Docker组件 sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-compose-plugin # 清理残留文件与目录 sudo rm -rf /var/lib/docker /var/lib/containerd /etc/docker # 清理无用依赖 sudo apt autoremove -y && sudo apt clean
步骤2:重新安装指定版本Docker
适配Ubuntu 20.04环境安装20.10.7版本:
# 更新软件源 sudo apt update # 安装依赖包 sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common # 添加Docker官方GPG密钥 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # 添加Docker软件源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 更新源并安装指定版本 sudo apt update sudo apt install -y docker-ce=5:20.10.7~3-0~ubuntu-focal docker-ce-cli=5:20.10.7~3-0~ubuntu-focal containerd.io
步骤3:安装指定版本docker-compose
# 下载1.29.2版本二进制文件 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 添加执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证安装 docker-compose --version
步骤4:启动并验证Docker服务
# 启动服务并设置开机自启 sudo systemctl start docker sudo systemctl enable docker # 检查服务状态 sudo systemctl status docker # 验证Docker功能 sudo docker ps sudo docker run hello-world
步骤5:恢复业务容器(若有备份)
- 持有
docker-compose.yml文件:进入文件目录执行sudo docker-compose up -d - 持有镜像备份包(
.tar):执行sudo docker load -i 镜像备份文件.tar - 持有容器导出文件:执行
sudo docker import 容器导出文件.tar 自定义镜像名,再基于镜像创建容器
内容的提问来源于stack exchange,提问作者farshid
相关产品推荐
相关产品推荐

