Ubuntu执行apt-get更新后Portainer容器消失且无法重新部署
解决方案
1. 排查并修复只读文件系统问题
检查分区挂载状态
执行命令查看根分区是否被挂载为只读:
mount | grep ' / '
若输出包含 ro(只读标识),立即重新挂载为读写模式:
sudo mount -o remount,rw /
如果/docker目录位于单独分区,同样检查该分区的挂载状态:
mount | grep '/docker'
存在只读挂载时执行对应分区的重新挂载命令。
修复文件系统错误
只读挂载通常是系统检测到文件系统损坏后的保护机制,需按以下步骤修复:
- 切换至单用户模式(或使用Ubuntu Live CD启动系统)
- 卸载目标分区(例如根分区
/dev/sda1):sudo umount /dev/sda1 - 执行文件系统检查:
sudo fsck -f /dev/sda1
按提示完成修复后重启系统。
2. 修复Docker套接字权限问题
验证套接字权限配置
检查/var/run/docker.sock的权限:
ls -l /var/run/docker.sock
正常输出应类似:srw-rw---- 1 root docker 0 ... /var/run/docker.sock
修正权限设置
若权限不符,执行以下命令修复:
sudo chmod 660 /var/run/docker.sock sudo chown root:docker /var/run/docker.sock
重启Docker服务
sudo systemctl restart docker
3. 重新部署Portainer容器
确保Portainer以正确权限运行,使用以下命令重新部署:
sudo docker run -d -p 9000:9000 -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest
4. 极端情况:彻底重置Docker环境(需先备份数据)
若上述方法无效,备份重要容器数据后,彻底清理并重新安装Docker:
# 停止Docker相关服务 sudo systemctl stop docker sudo systemctl stop docker.socket # 清理Docker数据目录 sudo rm -rf /var/lib/docker # 卸载Docker组件 sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo apt-get autoremove sudo apt-get autoclean # 重新安装Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io # 将当前用户加入docker组 sudo usermod -aG docker $USER # 重新部署Portainer sudo docker run -d -p 9000:9000 -p 9443:9443 \ --name portainer \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce:latest
内容的提问来源于stack exchange,提问作者nath2125
相关产品推荐
相关产品推荐

