docker挂载路径问题
·
更新于 ·
giftia
问题背景
docker-compose 启动容器后,删除宿主机挂载目录再重建,容器内报找不到文件路径。
原因
Docker bind mount 基于 inode 建立映射。删除重建目录会改变 inode,容器仍引用旧 inode,挂载关系断裂。
解决方案
方案1:重启容器(推荐)
docker compose restart gamerobot
# 或彻底重建
docker compose down && docker compose up -d
方案2:避免删除目录
# 错误
rm -rf /data && mkdir /data && cp files/* /data/
# 正确:只更新内容
cp -rf new_files/* /data/
方案3:使用 rsync
rsync -av --delete source/ /data/
总结
Docker 容器运行时避免删除挂载目录,只更新文件内容。如必须删除,务必重启容器。