跳转到内容
GitHub

Docker

按 Alt-C 或选择 命令 → Docker,可在当前面板中列出容器,按 Compose 项目分组,不属于任何项目的容器排在最后。另一个面板显示所选容器的信息:状态、端口、网络、挂载、命令和重启策略,以及实时的 CPU、内存、网络和磁盘使用情况,并附有最近一分钟的图表。选中项目时,则显示项目文件夹、其中的容器以及它们的资源使用合计。按 Esc 关闭该视图,筛选条件会保留到下次打开。

CPU 会显示两个数值。当前 % 是最近一次读数,平均 % 是最近几秒的平均值,与进程监视器相同,因此容器断断续续地工作时,这个数值也保持平稳。列表太窄、放不下两列时,只显示 平均 %。详细信息中以 当前 CPU 和 平均 CPU 显示同样的两个数值,项目则把其中运行中容器的这两个数值分别相加。

按键 操作
↑ ↓, PgUp, PgDn, Home, End 移动
← → / Enter 折叠或展开项目;在容器上按 Enter 可跳到其详细信息
S / X / R 启动 / 停止 / 重启容器或项目中的容器
P 暂停或恢复
F 浏览容器中的文件
E, Alt-2 在容器中打开 Shell,或返回已打开的 Shell
Alt-1 重新显示容器概述,在其 Shell 中也可使用
D 显示磁盘占用,或返回容器列表
/ 按名称、服务、镜像或项目筛选
Alt-O 在列表旁打开 Compose 文件所在的文件夹
Tab 在列表和详细信息之间切换
Alt-W 最大化当前焦点所在的窗格

停止和重启前会先请求确认。对项目执行操作时,只会影响需要改变状态的容器,例如“启动”只会启动已停止的容器。

Alt-O 会在另一个面板中打开启动该容器或项目的 Compose 文件所在的文件夹,并把光标放在该文件上;如果 Compose 没有给出文件,则打开项目文件夹。列表保持原样,与进程监视器中相同(参见活动与内存)。不是由 Compose 启动的容器在此计算机上没有文件夹,因此 Alt-O 会给出提示,这时可以按 F 浏览它的文件。

在运行中的容器上按 F,会关闭 Docker 视图,并在该面板中显示容器的文件系统,从容器的工作目录开始。面板标题会显示容器名称。另一个面板仍停留在主机的文件夹中,因此 F5 可以双向复制;F3 查看、F7 新建文件夹和 F8 删除则在容器内执行。搜索、大小统计、预览和编辑仅适用于主机。Alt-C 返回 Docker 视图,在容器根目录中选择 .. 会让面板回到之前显示的主机文件夹。浏览容器需要容器中有 sh,因此无法列出没有 Shell 的精简镜像。

当面板显示容器的文件时,命令行会跟随面板:它会变成该容器的 Shell,在面板所在的文件夹中启动,提示符开头显示容器名称。命令在容器内运行,运行结束后面板会刷新,在其中执行 cd 也会让面板随之切换。Ctrl-O 显示该容器的控制台,标记为 ▣ 容器名 控制台。切回主机面板时,命令行和 Ctrl-O 重新归主机使用,之前在那里输入的内容也仍然保留。这与 Docker 视图中容器的 Shell 标签页是同一个 Shell。

如果希望命令行始终留在主机上,请在 选项 → 插件 中关闭 跟随。之后,当面板显示容器的文件时,命令行会变暗并标记为 ⌂ 主机,在切换到主机面板之前按 Enter 不会有任何反应,从而避免命令在错误的机器上运行。

E 会在详细信息面板的 Shell 标签页中打开容器内的 Shell(如果镜像中有 bash 就用 bash,否则用 sh),并将你的按键(包括功能键)发送给它。Alt-1 显示概述,Alt-C 返回列表,鼠标滚轮可向回滚动查看 Shell 的输出。在你查看其他容器、关闭 Docker 视图或使用主机控制台时,Shell 会继续运行;其所属容器在列表中标有 ›_,并计入 Alt-C 快捷键上显示的数量。当你退出 Shell、其容器停止或 Borg 退出时,Shell 会关闭(如果还有打开的 Shell,Borg 会先询问)。

该插件使用 docker 命令行工具及其当前上下文,因此同样适用于 Docker Desktop、OrbStack、Colima 和远程引擎。可在 选项 → 插件 中关闭该插件。

在 Docker 视图中按 D,或选择 F9 → Docker → 磁盘占用,会在容器列表的位置显示 Docker 在磁盘上保存的内容,每类一行:构建缓存、悬空镜像、未使用的镜像、使用中的镜像、已停止的容器、未使用的匿名卷、未使用的命名卷、使用中的卷和未使用的网络。每行显示数量、大小以及删除后能释放的空间,顶部一行汇总所有可回收的空间。Borg 在后台用 docker system df --verbose 测量,在繁忙的引擎上可能需要一些时间。R 重新测量;在 F8 输入过命令之后,提示符下的下一条命令结束时,Borg 也会重新测量。

悬空镜像是不再有任何名称指向的构建,通常是因为它们的标签已移到更新的构建上。未使用的镜像有名称,但没有任何容器是从它们创建的。容器使用的镜像和卷(无论容器是否在运行)会一直保留,直到这些容器被删除,因此这些行不会释放任何空间。镜像只会释放其他镜像不共享的层,所以它的可回收大小可能远小于它的大小。

按 → 或 Enter 可将某一类展开为其中的条目,从大到小排列,按 ← 再次折叠。另一个面板显示所选条目:镜像的标签、ID、共享大小、创建时间和容器数量;构建缓存记录的类型、是否共享或正在使用,以及上次被构建使用的时间;容器的镜像和状态;卷的各项信息,见下面几段。Docker 无法测量的大小显示为 ?,/ 可同时筛选所有类别,还能按 Compose 项目以及使用卷的容器和镜像找到卷。

卷所在的行会利用名称列的空余位置,尽量多地显示上次使用、创建时间、项目和使用者,按 Alt-W 最大化窗格即可全部显示。项目是创建该卷的 Compose 项目。使用者列出挂载该卷的容器,无论是否在运行。匿名卷以其 ID 的前 12 个字符显示。

有挂载该卷的容器在运行时,上次使用显示使用中。否则显示这些容器中最后一个停止的日期,Docker 会准确记录这个时间。容器删除后,Docker 不再保留该卷的任何使用记录。如果 Borg 能直接读取卷的文件,它还会查看文件最近一次更改的时间;如果更改更晚,就显示那一天,并在前面加上 ~。这个日期是估计值:读取文件不会留下痕迹,因此之后卷可能仍被使用过。单元格为空表示 Borg 两者都不知道。

另一个面板显示上次使用和创建的完整时间、Compose 项目及卷在其中的名称;卷使用 local 以外的驱动或带有选项时,还会显示驱动。每个挂载该卷的容器占一行,显示其状态和挂载路径。对于匿名卷,这些容器列在所属容器中,并附上它们的镜像。容器删除后,Docker 就不再记得它。文件夹和内容显示文件在本机上的位置以及卷顶层有哪些内容。

在卷上按 Enter,会在面板中以只读方式显示其文件。面板标题带有 ▥ 和只读标记,路径从卷的顶层开始。F3 查看文件,F5 把文件复制到另一个面板。Borg 会拒绝任何会更改卷的操作:编辑、移动、删除、新建文件夹、打包,以及复制到卷中。在卷的顶层进入 .. 会让面板回到之前显示的文件夹,命令行也一直留在那个文件夹。面板显示卷时保存的会话,下次会打开那个文件夹。

如果卷的文件就在本机上,Borg 会直接读取。在 macOS 上使用 OrbStack 时,它们位于 OrbStack 在 ~/OrbStack/docker/volumes 中的共享,macOS 把它视为网络宗卷:请在 系统设置 › 隐私与安全性 › 文件与文件夹 中允许终端应用访问“网络宗卷”。在 Linux 上,如果引擎运行在同一台机器上,且 Borg 有权打开卷的文件夹,例如使用 rootless 模式的 Docker 或以 root 身份运行 Borg,Borg 就会读取该文件夹。这时搜索和大小统计与在任何文件夹中一样可用。

在其他情况下,例如使用 Docker Desktop、远程上下文,或在 Linux 上只有 root 能读取其文件夹的 Docker,Borg 会通过辅助容器显示这些文件。辅助容器运行固定到某个构建的 busybox 镜像,没有网络,文件系统只读,除读取文件外没有任何权限,并以只读方式挂载该卷。第一次使用时,Borg 会在 Docker 下载镜像(约 2 MB)之前询问你,之后镜像以 borg-commander/volume-helper 的名称留在引擎上。在面板打开之前,页脚显示正在下载 busybox…或正在启动辅助容器…。面板离开该卷或 Borg 退出时,Borg 会删除辅助容器;遗留的辅助容器会在一天后自行停止。与容器的文件一样,此时搜索和大小统计只能在主机上使用,磁盘占用也不会把辅助容器算作使用该卷的容器。

测量结束后,Borg 会在后台从大到小读取它能直接访问的卷,读取完成前页脚显示正在读取卷文件…。R 在重新测量时也会重新读取这些卷。

F8 会在主机 Shell 的提示符处输入所选行的清理命令,并显示控制台。在你按 Enter 之前不会运行任何内容,因此你可以先阅读、修改命令,或用 Ctrl-U 清除它。在某一类上,F8 输入该类的 prune 命令,例如未使用的镜像对应 docker image prune -a,未使用的匿名卷对应 docker volume prune,Docker 在删除任何内容之前都会请求确认。在条目上,F8 输入 docker rmi、docker rm 或 docker volume rm,后面跟该条目,或所有已标记的镜像、容器或卷。Space 或 Insert 标记条目,* 反转所选类别的标记。镜像按其全部标签删除,因为 Docker 会随最后一个标签一起删除镜像;没有标签的镜像则按 ID 删除。构建缓存记录只能用 docker builder prune 一起清理。Borg 从不添加 -f 或 --force。名称中含有控制字符时,F8 不会为它输入命令,因为提示符会把该字符当作按键。

卷里保存着容器存下的数据,例如数据库的文件,删除的卷无法恢复。另一个面板会在每条卷命令旁重复这一提醒。当 docker 命令行工具有多个上下文时,命令会写明 Borg 测量时使用的那个,例如 docker --context staging image prune,这样无论 Shell 会选用哪个上下文,命令都会到达同一个引擎。这些命令始终发送到主机的 Shell,即使某个面板正在显示容器的文件也是如此,因为 Docker 视图会让命令行留在主机上。

本指南跟随 main 分支更新 · Borg 0.11.0 · 1f6bce6
最新发布版本可能尚未包含此处介绍的全部功能。 发布说明

译自英文指南,欢迎指正。命令和键盘快捷键不作翻译。