将docker容器内容映射到宿主机上

如果配置了卷映射后,宿主机上的 /www/wwwroot/openim-server 目录为空,这通常是因为:

  1. 目录优先级问题 :当 Docker 启动容器时,如果宿主机上的目录已经存在且为空,会将容器内对应目录的内容隐藏,只有宿主机上的文件可见。因此,如果宿主机上的 /www/wwwroot/openim-server 目录为空,它会覆盖容器内 /openim-server 目录的内容,使你在宿主机上看到的是一个空文件夹。

  2. 初始目录内容未同步:当宿主机目录挂载到容器时,容器内的内容不会自动复制到宿主机上。换句话说,如果你希望在宿主机上看到容器内的文件,必须手动复制这些文件到宿主机目录中。

解决方法

你可以选择以下两种方法之一来解决这个问题:

方法 1: 先手动复制容器内的文件到宿主机
  1. 启动容器,不挂载卷 :先启动容器,不配置 volumes,让容器内的 /openim-server 目录保持不变。

    bash 复制代码
    docker-compose up -d
  2. 进入容器并复制文件到宿主机:

    bash 复制代码
    docker cp openim-server:/openim-server /www/wwwroot/openim-server
  3. 修改 docker-compose.yml,重新添加卷映射:

    yaml 复制代码
    volumes:
      - /www/wwwroot/openim-server:/openim-server
  4. 重启容器:

    bash 复制代码
    docker-compose down
    docker-compose up -d
方法 2: 在宿主机上准备好文件夹内容
  1. 在宿主机上准备好文件内容 :将你希望容器使用的文件手动放到 /www/wwwroot/openim-server 目录中。

  2. 启动容器,卷映射后生效:再次启动容器时,宿主机上的文件会覆盖容器内的文件。

总结

为了避免挂载卷后出现空文件夹的问题,建议在挂载之前手动复制容器内的文件到宿主机,或者先在宿主机上准备好需要的文件,这样可以确保在挂载卷后,你能够正确地在宿主机上查看和编辑这些文件。

相关推荐
姜鱼问生15 小时前
网页一片白?Docker 跑 Nginx 读不到文件,403 Forbidden 排查实录
nginx·docker·容器
\光辉岁月/16 小时前
2.spring5-IOC
java·容器·ioc·注解
ms72wx16 小时前
Docker 命令学习笔记:从入门到进阶的实战指南
笔记·学习·docker
java_logo17 小时前
Docker 部署 Excalidraw:轻松搭建手绘风格白板
运维·docker·容器·excalidraw·白板·轩辕镜像
海的透彻19 小时前
如何让docker容器启动时用自定义的用户
java·docker·dubbo
程序员清风20 小时前
LibreChat 实战:用 Docker 搭建可扩展的多模型对话平台
运维·docker·容器
Web3&Basketball21 小时前
从0到1落地AI Agent沙箱隔离Docker实战:踩坑全记录
运维·docker·容器·agent·容器安全·沙箱隔离
bluebonnet2721 小时前
【docker】使用regctl免安装docker下载镜像
运维·docker·容器
Java开发追求者2 天前
windows快速安装docker
windows·docker·安装·1024程序员节
骑着蜗牛撵大象3272 天前
飞牛fnOS部署Damselfly:Compose编排、照片目录与7100固定访问
java·docker·rpc·dubbo·fnos·照片管理·damselfly