迁移Docker data-root到SD卡后资源不可见且权限异常求助
Docker迁移data-root到SD卡后恢复数据及权限持久化方案
1. 确认Docker配置文件的正确性
- 编辑Docker守护进程配置文件
/etc/docker/daemon.json,确保data-root指向SD卡的目标路径:{ "data-root": "/mnt/sd/var/lib/docker" } - 保存文件后重启Docker服务:
sudo systemctl restart docker - 验证配置是否生效,执行以下命令,输出应显示你设置的SD卡路径:
docker info | grep "Docker Root Dir"
2. 持久化修复目录权限(解决临时生效问题)
- SD卡挂载时的权限参数会导致手动修改的权限被重置,编辑
/etc/fstab文件,找到SD卡对应的挂载行,添加uid=root,gid=docker,umask=0002参数,示例如下:/dev/mmcblk0p1 /mnt/sd ext4 defaults,uid=root,gid=docker,umask=0002 0 2 - 重新挂载SD卡使配置生效:
sudo mount -o remount /mnt/sd - 一次性修正Docker目录的所有权和权限,确保docker用户组拥有访问权限:
sudo chown -R root:docker /mnt/sd/var/lib/docker sudo chmod -R 775 /mnt/sd/var/lib/docker
3. 让Portainer重新识别数据
- 如果Portainer以容器形式运行,直接重启容器即可(先通过
docker ps找到容器名,替换下面的portainer):docker restart portainer - 若重启后仍无法识别,可重新部署Portainer,确保挂载的Docker套接字和数据卷路径正确:
docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /mnt/sd/var/lib/docker/portainer_data:/data \ portainer/portainer-ce:latest
4. 验证恢复效果
- 执行
docker images、docker ps -a命令,检查原有镜像、容器是否能被识别 - 登录Portainer界面,查看镜像、容器、堆栈、卷等资源是否正常显示
内容的提问来源于stack exchange,提问作者Leonid Sharlandzhiev
相关产品推荐
相关产品推荐

