Docker绑定主机与容器目录失败:/home与容器/test同步异常
Docker绑定挂载未同步文件的问题分析与解决
核心问题
你搞反了绑定挂载的方向:docker run -v /home:/test 是将主机的/home目录挂载到容器的/test目录,此时容器内原有的/test目录内容会被主机/home的内容覆盖(隐藏),所以主机/home不会出现容器里的new.txt,反而主机/home的内容会出现在容器/test中。
解决方法
方法1:直接复制容器内文件到主机
如果仅需要获取容器里的new.txt,最直接的方式是:
# 启动临时容器(无需挂载) docker run -d --name temp_sample sample1:latest # 复制容器内的new.txt到主机/home目录 docker cp temp_sample:/test/new.txt /home/ # 清理临时容器 docker stop temp_sample && docker rm temp_sample
方法2:用命名卷实现初始数据同步(适合持久化场景)
如果希望容器启动时自动将/test目录内容同步到主机/home,可借助命名卷中转(Docker会自动将容器目录内容复制到新创建的命名卷):
- 创建命名卷并同步容器内容:
docker volume create test_data docker run -d --name temp_container -v test_data:/test sample1:latest
- 将卷内内容复制到主机/home:
# 用busybox镜像做中转,完成目录内容复制 docker run --rm -v test_data:/source -v /home:/target busybox cp -r /source/. /target/
- 清理临时资源(可选):
docker stop temp_container && docker rm temp_container docker volume rm test_data
方法3:双向同步的挂载逻辑
若后续需要主机/home与容器/test双向同步,且保留容器初始内容,需先完成文件复制,再挂载:
- 按方法1将new.txt复制到主机/home
- 启动挂载容器:
docker run -t -d -v /home:/test sample1:latest /bin/bash
此时两边的文件修改会实时同步。
内容的提问来源于stack exchange,提问作者kunal h
相关产品推荐
相关产品推荐

