文件
打开服务的 文件 卡片,浏览运行中容器内的文件:打开文件夹、阅读文本文件、下载文件、上传文件、新建文件夹、重命名和删除。
文件浏览器作用于服务最新的运行实例,与 命令 和 终端 卡片使用同一个通道。服务部署并运行后即可使用。
可以做什么
| 操作 | 方法 |
|---|---|
| 浏览 | 点击文件夹,使用列表上方的路径,或者输入路径后点击 前往。列表显示每一项的大小、权限(类似 ls -l)和修改时间;鼠标悬停在权限上可以看到所有者。 |
| 阅读 | 点击文件即可显示。文本文件最多显示前 256 KB;二进制文件只能下载。 |
| 下载 | 文件旁边的下载按钮,或者查看器中的 下载。文件最大 500 MB。 |
| 上传 | 上传,或者把文件拖到列表中。文件会放进你当前查看的文件夹。文件最大 50 MB,一次一个。如果已有同名文件,替换前会询问你。 |
| 新建文件夹、重命名 | 新建文件夹,以及每一项旁边的铅笔按钮。重命名不会改变所在的文件夹。 |
| 删除 | 垃圾桶按钮,然后点击 删除 确认。删除文件夹会连同其中所有内容一起删除;删除链接不会影响它指向的内容。删除无法撤销。 |
数据卷与丢失的修改
容器中数据卷以外的文件来自镜像,每次重新部署或重启都会还原。文件浏览器会在列表上方说明这一点,并列出服务的数据卷;在数据卷内部时,会提示修改会被保留。数据卷文件夹在列表中标记为 数据卷。
文件浏览器适合用来检查服务、取出文件,或者把数据放进数据卷。如果要修改数据卷以外的文件并让修改保留,请修改镜像,或者在服务的 设置 标签页中添加配置文件。配置文件以只读方式挂载,所以无法在这里修改。
要求
容器中需要有 shell(sh)和常用的文件工具(cat、stat、mv、rm、mkdir、wc),所有基于 Alpine、BusyBox、Debian 或 Ubuntu 的镜像都有。distroless 或 scratch 这类极简镜像只包含应用本身;对于这类镜像,文件浏览器会提示镜像中没有 shell。文件操作以容器的用户身份运行,所以不以 root 运行的容器可能无法读取或修改某些文件。
谁可以使用
成员、管理员和所有者。观察者完全不能打开文件浏览器,连列出文件都不行,因为文件中可能包含密钥和 .env 文件之类的机密。
上传、下载、新建文件夹、重命名和删除都会记录在团队的审计日志中,包括服务和路径。从不记录文件内容。
工作原理
每个操作都通过控制面以类似 kubectl exec 的方式,在容器中运行一个固定的脚本。路径会被规范化(所以 .. 无法越过 /),并作为独立参数传给脚本,从不拼接进 shell 命令,所以包含空格、引号或 $(…) 的名称都会被当作普通名称处理。上传内容先流式写入目标旁边的临时文件,所有字节到齐后才移动到位;中断的上传不会留下任何东西。下载以附件形式发送,浏览器永远不会把它当作网页打开。