如何将主机目录及U盘挂载至运行中的NextcloudPi Docker容器
如何将主机目录(U盘)挂载到运行中的NextcloudPi容器
刚好我之前也碰到过和你一样的需求——给运行中的NextcloudPi容器临时挂载U盘做备份,不用重新创建容器,下面分两种场景给你详细讲操作步骤:
一、临时挂载(重启容器后失效,适合单次备份)
这种方法适合你只是临时备份文件、不需要长期挂载的场景:
步骤1:先在主机上挂载好U盘
首先得把U盘先挂载到你的主机系统里:
- 先查询U盘的设备名,执行命令:
lsblk,你会看到类似/dev/sdb1的设备条目(注意别和系统盘搞混) - 创建主机上的挂载点:
sudo mkdir -p /mnt/nextcloud_backup - 将U盘挂载到这个目录:
sudo mount /dev/sdb1 /mnt/nextcloud_backup(替换成你查到的真实设备名) - (可选但建议)给目录设置合适权限,避免容器内访问报错:
sudo chown www-data:www-data /mnt/nextcloud_backup(NextcloudPi一般以www-data用户运行)
步骤2:挂载主机目录到运行中的容器
接下来把主机上的U盘目录绑定到容器内部:
- 先获取NextcloudPi容器的PID,替换成你的容器名或ID:
CONTAINER_PID=$(docker inspect -f '{{.State.Pid}}' nextcloudpi) - 在容器内部创建挂载点(如果容器里还没有这个目录的话):
sudo nsenter -t $CONTAINER_PID -m mkdir -p /mnt/usb_backup - 最后完成绑定挂载:
sudo mount --bind /mnt/nextcloud_backup /proc/$CONTAINER_PID/root/mnt/usb_backup
现在你进入容器(docker exec -it nextcloudpi bash),就能在/mnt/usb_backup下看到U盘里的内容了,直接操作备份即可。
二、永久挂载(重启容器后依然生效,适合长期使用)
如果以后还要频繁用这个U盘备份,建议用这种方法,但需要重启容器:
方法1:修改容器配置(需谨慎操作)
- 先停止容器:
docker stop nextcloudpi - 找到容器的配置文件位置,一般在
/var/lib/docker/containers/<容器ID>/config.v2.json(一定要先备份这个文件,避免改坏导致容器无法启动) - 编辑JSON文件,找到
Mounts数组,添加一条挂载配置:{ "Type": "bind", "Source": "/mnt/nextcloud_backup", "Destination": "/mnt/usb_backup", "Mode": "", "RW": true, "Propagation": "rprivate" } - 保存文件后重启容器:
docker start nextcloudpi
方法2:用docker-compose重新部署(更稳妥)
如果你的NextcloudPi是用docker-compose部署的,直接修改docker-compose.yml添加挂载配置:
services: nextcloudpi: # 保留原有其他配置 volumes: - /mnt/nextcloud_backup:/mnt/usb_backup
然后重新启动容器:docker-compose up -d,这样以后容器重启时挂载会自动生效。
内容的提问来源于stack exchange,提问作者kuga
相关产品推荐
相关产品推荐

