插件窝 干货文章 docker容器内部文件在哪

docker容器内部文件在哪

容器 Docker 路径 存储 83    来源:    2025-04-08

在 Docker 中,容器内部的文件系统路径取决于容器运行时状态和存储驱动类型。以下是关键信息整理:


1. 容器内部视角

  • 运行中的容器拥有独立的文件系统命名空间,路径与普通 Linux 系统类似(如 /app, /var/www 等)。
  • 进入容器查看bash docker exec -it <容器名或ID> /bin/sh # 或 docker exec -it <容器名或ID> ls /path/in/container

2. 宿主机视角

容器文件实际存储在宿主机上,路径由存储驱动决定:

默认存储位置(Linux 系统)

  • 路径模板/var/lib/docker/<存储驱动>/<容器ID>/
  • 常见存储驱动
    • overlay2(现代默认驱动):/var/lib/docker/overlay2/<容器ID>/
    • aufs/var/lib/docker/aufs/
    • devicemapper/var/lib/docker/devicemapper/

查找容器目录步骤

  1. 获取容器ID: bash docker inspect --format='{{.Id}}' <容器名>
  2. 进入存储目录(需 sudo): bash sudo ls /var/lib/docker/overlay2/<容器ID>/merged
    • merged 目录包含容器内所有文件的联合挂载视图。

3. 数据卷(Volumes)

如果文件存储在数据卷中,路径不同: - 查看卷的宿主机路径bash docker inspect -f '{{ .Mounts }}' <容器名> 输出示例: [{volume my_volume /var/lib/docker/volumes/my_volume/_data /app local true }] 宿主机路径为 /var/lib/docker/volumes/my_volume/_data


4. 临时文件系统

  • 默认情况下,容器停止后,文件仍保留在 /var/lib/docker 中,但删除容器后文件会被清除。
  • 若需持久化,必须使用 数据卷绑定挂载-v--mount 参数)。

5. 跨平台路径差异

  • Windows(WSL2): Docker 数据默认存储在 WSL 子系统中,路径类似: \\wsl$\docker-desktop-data\data\docker\overlay2\<容器ID>\
  • macOS: 通过 Docker Desktop 虚拟化,需进入虚拟机: bash screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

总结

  • 快速进入容器docker exec -it <容器名> sh
  • 查找宿主机路径docker inspect + 存储驱动目录。
  • 持久化数据:务必使用 volumesbind mounts

如有进一步场景需求(如特定存储驱动或操作系统),可提供更多细节以便精准定位。