通过Snap安装的Docker运行容器频繁无故自动停止问题排查求助
问题根因定位
从提供的日志可以直接确认,容器无故停止的直接原因是Docker daemon进程(dockerd)意外崩溃自动重启,关联的两个核心诱因如下:
- 存储驱动兼容性问题:当前使用的AUFS存储驱动在5.4内核的Ubuntu 18.04 + Snap版Docker 19.03组合下存在已知稳定性缺陷,dmesg日志中的
aufs aufs_fill_super:918:mount[18200]: no arg报错直接对应AUFS挂载失败,触发daemon异常。 - Snap服务的资源管控限制:Snap版Docker默认的cgroup资源配额、沙箱隔离限制会在容器负载较高时强制杀掉dockerd进程,日志中的
Force shutdown daemon就是被snap管控机制强制终止的直接证据。
修复方案
方案1:替换存储驱动为Overlay2(推荐,无需更换安装源)
- 停止所有运行中的容器,停止Docker服务:
sudo snap stop docker
- 备份现有Docker数据目录:
sudo cp -r /var/snap/docker/common/var-lib-docker /var/snap/docker/common/var-lib-docker.bak
- 修改daemon.json配置,替换存储驱动为overlay2:
sudo vi /var/snap/docker/current/config/daemon.json
修改后配置如下:
{ "log-level": "error", "storage-driver": "overlay2", "bip": "172.28.0.1/24" }
- 重启Docker服务,验证存储驱动生效:
sudo snap start docker docker info | grep "Storage Driver"
方案2:更换为官方源安装的Docker(彻底解决Snap版本的隔离限制问题)
如果方案1执行后仍存在崩溃问题,直接卸载Snap版Docker,改用Docker官方APT源安装的标准版本即可,Snap版本的Docker本身不推荐用于生产环境。
临时验证手段
修复后可通过snap logs -f docker实时监控daemon日志,同时配置容器的重启策略为always避免daemon重启后容器不自动恢复:
docker run -d --restart=always [你的镜像参数] # 现有容器更新重启策略 docker update --restart=always [容器ID/名称]
内容的提问来源于stack exchange,提问作者Manoj Govindan
相关产品推荐
相关产品推荐

