轻松查看Docker容器内的目录在宿主机的文件路径

问题背景

Docker容器内的文件环境与宿主机的文件环境是隔离开的,想要实现宿主机内的文件与Docker容器内的文件交互就需要挂载。但既然Docker容器是运行在宿主机上的,那么容器内的文件就一定会存储在宿主机上,那么该如何在宿主机的文件环境中定位到Docker容器的文件呢?

解决方案

可以看到当前我的Docker创建了4个容器,我们选取这个名为"doggy"的Java程序作为示例,查看一下Java程序运行产生的文件在宿主机的文件环境中的路径。

容器启动后在宿主机使用Docker命令:

bash 复制代码
docker inspect doggy

在响应信息中找到Data块:

**LowerDir:**包含多个只读层,每个层都对应一个镜像层。Docker镜像是由多个只读层叠加组成的,每一层都是基于上一个层创建的。

**MergedDir:**包含所有层的合并视图。这个目录就是容器运行时的文件系统视图。是一个挂载点。

**UpperDir:**当前容器层的读写层。任何对容器文件系统的写操作都会写入这个目录。我们的Java程序输出的文件就存放在这个层里。

**WorkDir:**工作目录,用于支持挂载操作的实现。当执行一些文件系统操作(如重命名文件或目录)时,会用到这个目录。

bash 复制代码
"Data": {
                "LowerDir": "/var/lib/docker/overlay2/e97a4e2f66a910dc648f71068dd7cba43ff824f151846eea6aa96b9d03578f41-init/diff:/var/lib/docker/overlay2/o8u2yaj6zj9gtzzhqhfmfh18g/diff:/var/lib/docker/overlay2/5eadp2x9hhq8ccema2qw3o51b/diff:/var/lib/docker/overlay2/l6o0eytii95msolwxee4oggu7/diff:/var/lib/docker/overlay2/3188f5f8c352e699ff7a055cac63a4881a39c484ccdf0b12a716c694d185e924/diff:/var/lib/docker/overlay2/34bb19eb78cac49893b53bf760ddf92880aae1e08fb20c8a09b68d6cb8a8eff9/diff:/var/lib/docker/overlay2/fdb6dbdd7ff804ef6ae1dd4eee8fdf644322eca60c26bac18ef420fe7728d13f/diff",
                "MergedDir": "/var/lib/docker/overlay2/e97a4e2f66a910dc648f71068dd7cba43ff824f151846eea6aa96b9d03578f41/merged",
                "UpperDir": "/var/lib/docker/overlay2/e97a4e2f66a910dc648f71068dd7cba43ff824f151846eea6aa96b9d03578f41/diff",
                "WorkDir": "/var/lib/docker/overlay2/e97a4e2f66a910dc648f71068dd7cba43ff824f151846eea6aa96b9d03578f41/work"
            },

因此我们可以找到UpperDir的路径,在宿主机的文件系统打开可以看到:

这个便是我的Java程序运行时的输出目录了。

SSH工具:XTerminal Mac版

相关推荐
CheungChunChiu8 分钟前
Android 系统中的 NTP 服务器配置与选择逻辑详解
android·运维·服务器
赖small强24 分钟前
【Linux 网络基础】网络通信中的组播与广播:基础概念、原理、抓包与应用
linux·网络·broadcast·组播·广播·multicast
陌路2027 分钟前
Linux是如何收发网络包的?
linux·网络
草莓熊Lotso1 小时前
红黑树从入门到进阶:4 条规则如何筑牢 O (logN) 效率根基?
服务器·开发语言·c++·人工智能·经验分享·笔记·后端
0wioiw01 小时前
跨网络互联技术(Nginx反向代理)
服务器·网络·nginx
带鱼吃猫2 小时前
Linux系统:策略模式实现自定义日志功能
linux·c++
程序员潇潇2 小时前
Jenkins 插件下载速度慢安装失败?这篇文章可能解决你头等难题!
运维·自动化测试·软件测试·功能测试·程序人生·职场和发展·jenkins
百***48072 小时前
从零到上线:Node.js 项目的完整部署流程(包含 Docker 和 CICD)
docker·容器·node.js
minji...2 小时前
Linux 进程概念 (三) (进程状态,僵尸进程,孤儿进程,进程优先级)
linux·运维·服务器
敲上瘾3 小时前
Docker镜像构建优化指南:CMD/ENTRYPOINT、多阶段构建与缓存优化
运维·缓存·docker·容器·架构