docker更换存储位置
玩客云本身只有8G空间,有了docker之后不够用了。需要把docker转移到别的地方。
盒子类emmc空间较小,
在类似环境部署 Docker 时,建议:
- 提前将 Docker 和 containerd 的数据目录都指向大容量分区
- 监控根分区使用率,避免达到 90%
- 定期清理日志和缓存
docker迁移
docker info | grep "Docker Root Dir"
默认在/var/lib/dockersystemctl stop dockermv /var/lib/docker /data/dockerln -sf /data/docker /var/lib/docker
现在使用修改配置文件的方法nano /etc/docker/daemon.json
1 | { |
设置data-root指向新目录。rsync -avxP /var/lib/docker /data/docker
重启dockersystemctl start docker
containerd迁移
containerd 数据目录要随 Docker 数据目录一起迁移到数据盘。使用软链接将 /var/lib/containerd 重定向到 /data/containerd。
方法同上。rsync -avxP /var/lib/containerd/ /data/containerd/
修改 containerd 的配置文件 config.tomlnano /etc/containerd/config.toml
在文件中找到 root = “/var/lib/containerd” 这一行,将路径改为新存储路径下的一个专门目录(注意:不要直接指向 data-root 的路径)
1 | version = 2 |
systemctl restart containerd
新问题
因为新目录在新磁盘上,需要在docker和containerd启动前挂载。
- 优化 fstab(减少 TF 卡写入)
fstab里挂载命令改成:UUID="b6a8837a-83fc-443c-8815-db2c4f85feec" /disk1 ext4 defaults,noatime,nofail,x-systemd.device-timeout=30s 0 0
1 | sed -i 's|/disk1 ext4 defaults 0 0|/disk1 ext4 defaults,noatime,nofail,x-systemd.device-timeout=30s 0 0|' /etc/fstab |
- 配置 systemd 依赖(防止重启抢跑)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15mkdir -p /etc/systemd/system/containerd.service.d
tee /etc/systemd/system/containerd.service.d/override.conf > /dev/null << 'EOF'
[Unit]
After=disk1.mount
Requires=disk1.mount
EOF
mkdir -p /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/override.conf > /dev/null << 'EOF'
[Unit]
After=disk1.mount
Requires=disk1.mount
EOF
systemctl daemon-reload - 验证
1 | systemctl show docker.service | grep -E "Requires|After" | grep disk1 |
现在架构就非常完美了:系统跑在 eMMC 上,Docker 数据跑在 TF 卡上,既保护了 eMMC 寿命,又用大容量 TF 卡装下了 Docker 数据。重启后也不会抢跑。😊






