Ubuntu 22.04 安装 ctop 0.7.7 指南

Ubuntu 22.04 安装 ctop 0.7.7 指南:官方二进制、azlux 第三方 apt 仓库(含 jammy 无 Release 文件排障实录)、官方 Docker 镜像三条路径实测,含验证、升级降级、FAQ 与卸载。

ctop应用监控可观测性容器监控2026/10/23

Ubuntu 22.04 安装 ctop 0.7.7 指南

目标:在 Ubuntu 22.04 服务器上安装容器监控工具 ctop 0.7.7 并验证可用——本文覆盖官方二进制、azlux 第三方 apt 仓库、官方 Docker 镜像三条安装路径与一条排障实录,全部命令与回显均在 Ubuntu 22.04(x86_64,Docker Engine 29.8.1)实测通过。

一、环境信息

本章列出实测环境的可复现信息。

  • 操作系统:Ubuntu 22.04(x86_64),内核 6.8.0-138-generic
  • 容器运行时:Docker Engine 29.8.1(API 1.56)
  • 目标软件:ctop 0.7.7(当前最新稳定版,官方发布二进制 build 11a1cb1,Go 1.18 编译)
  • 网络出口:可直连 GitHub 与 packages.azlux.fr;国内网络环境下载慢时建议配置 HTTP 代理
  • 版本信息查询日期:2026-10-23(GitHub Releases releases.atom 实查)

二、前置条件

安装前确认以下四点,缺一项都会导致装完用不起来。

  1. 有运行中的容器可监控:ctop 是容器指标查看器,机器上需装有 Docker Engine 且有容器在跑。验证(实测回显):

    docker version --format 'Server: {{.Server.Version}} / API {{.Server.APIVersion}}'
    
    Server: 29.8.1 / API 1.56
    
  2. 执行用户能访问 docker 套接字:root 用户天然可用;普通用户需加入 docker 组:

    sudo usermod -aG docker <你的用户名>   # 改完重新登录生效
    ls -l /var/run/docker.sock
    
    srw-rw---- 1 root docker 0 Oct 19 15:47 /var/run/docker.sock
    
  3. 交互终端:ctop 是 TUI 程序,必须在真实 TTY 中运行(SSH 会话即可);定时任务、管道里直接跑会 panic,见"十二、常见问题"Q4。

  4. 下载通道:方案 A、B 需要访问 github.com / packages.azlux.fr;如果服务器网络受限,先给 curl/apt 配置代理(设置 https_proxy 环境变量,或在 apt 配置中使用 Acquire::http::Proxy 选项)。

三、版本选型说明

ctop 的版本发布节奏与选择依据如下(实查 GitHub,2026-10-23):

项目实查结果
最新稳定版v0.7.7(2021-07-01 发布)
releases 流最后活动2022-03-22
发布物(linux-amd64)ctop-0.7.7-linux-amd64(13606047 字节,Go 1.18 编译)
Ubuntu 官方仓库无 ctop 包(Ubuntu 22.04 jammy/universe 均未收录)
第三方 apt 仓库azlux(packages.azlux.fr/debian,官方 README 推荐),包名 docker-ctop,版本 0.7.7
官方容器镜像quay.io/vektorlab/ctop:latest(0.7.7,build 59f00dd)

⚠️ 注意:ctop 自 v0.7.7 后长期未发版,属于低维护项目;三个安装渠道版本一致(0.7.7),不存在"选旧版"问题。查看未来新版本的命令(不硬编码版本号):

curl -s https://github.com/bcicen/ctop/releases.atom | grep -oE '<title>[^<]+</title>' | head -5
<title>Release notes from ctop</title>
<title>v0.7.7</title>
<title>v0.7.6</title>
<title>0.7.5</title>
<title>0.7.4</title>

(实测输出节选,首行为 feeds 标题,其后按时间倒序列版本)

关键差异解读:apt 方案交给包管理器管理、卸载升级干净,但受制于第三方仓库的可用性;二进制方案最直接、零依赖、任何目录可放,推荐作为默认;Docker 镜像方案免安装文件,适合已有 Docker 且不想在宿主机留文件的场景。

四、方案 A:官方二进制安装(推荐)

本章走官方 README 的 Linux 通用安装路径:下载 GitHub Releases 的平台二进制,放到 PATH 目录并加执行权限。ctop 是交互式 TUI 工具、不是常驻服务,无需也不应做 systemd 托管,装完即可运行。

4.1 下载二进制

sudo curl -fL https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -o /usr/local/bin/ctop

实测下载进度尾部:

100 12.9M  100 12.9M    0     0  9578k      0  0:00:01  0:00:01 --:--:-- 9284k

4.2 加执行权限并验证

sudo chmod +x /usr/local/bin/ctop
ls -l /usr/local/bin/ctop
ctop -v
-rwxr-xr-x 1 root root 13606047 Oct 23 05:07 /usr/local/bin/ctop
ctop version 0.7.7, build 11a1cb1 go1.18

版本回显与 Releases 页标注一致(v0.7.7,build 11a1cb1),安装完成。验证方式就是 ctop -v:能打印版本号即二进制完整可执行。

五、方案 B:azlux 第三方 apt 仓库安装

官方 README 为 Debian/Ubuntu 推荐了 azlux 维护的第三方仓库(包名 docker-ctop)。该仓库实际只发布 Debian 套件,在 Ubuntu 上按 README 原样执行会失败(下文 5.2 给出实录与修正),修正后可正常安装。

5.1 安装依赖与添加仓库源

sudo apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://azlux.fr/repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/azlux-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian bookworm main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo apt-get update

实测 apt update 拉到 azlux 源索引:

Get:1 http://packages.azlux.fr/debian bookworm InRelease [3991 B]
Get:3 http://packages.azlux.fr/debian bookworm/main amd64 Packages [5122 B]

5.2 ⚠️ 排障实录:Ubuntu 直接写 jammy 会报"无 Release 文件"

按官方 README 用 $(lsb_release -cs) 自动填套件名,Ubuntu 22.04 会得到 jammy,实测 apt update 直接报错:

Ign:4 http://packages.azlux.fr/debian jammy InRelease
Err:6 http://packages.azlux.fr/debian jammy Release
E: The repository 'http://packages.azlux.fr/debian jammy Release' does not have a Release file.

原因:azlux 仓库只发布 Debian 套件(bookworm 等),没有 Ubuntu 的 jammy 套件目录。解决:把源里的套件名手工写成 bookworm(如 5.1 所示),apt update 即正常,安装的 0.7.7 在 Ubuntu 22.04 上运行无兼容问题(同一 Go 静态二进制)。

5.3 安装并验证

sudo apt-get install -y docker-ctop
apt-cache policy docker-ctop
dpkg -L docker-ctop
docker-ctop:
  Installed: 0.7.7
  Candidate: 0.7.7
  Version table:
 *** 0.7.7 500
        500 http://packages.azlux.fr/debian bookworm/main amd64 Packages
/.
/usr
/usr/bin
/usr/bin/ctop
/usr/share
/usr/share/doc
/usr/share/doc/docker-ctop
/usr/share/doc/docker-ctop/changelog.Debian.gz

(apt-cache policy 在未安装时应显示 Installed: (none) / Candidate: 0.7.7,安装后如上。)

包安装的二进制位于 /usr/bin/ctop,验证:

/usr/bin/ctop -v
which -a ctop
ctop version 0.7.7, build 11a1cb1 go1.18
/usr/local/bin/ctop
/usr/bin/ctop
/bin/ctop

which -a 显示两套安装并存时,/usr/local/bin 在 Ubuntu 默认 PATH 中排在 /usr/bin 之前,因此敲 ctop 实际执行的是方案 A 的二进制——两者 build 号相同(11a1cb1),行为一致;若想让 apt 版生效,删除 /usr/local/bin/ctop 即可。

六、方案 C:官方 Docker 镜像运行

不往宿主机放文件的话,可以用官方在 quay.io 发布的镜像,把宿主机 docker 套接字只读挂给容器使用。这是官方 README 给出的标准运行方式:

docker run --rm -ti \
  --name=ctop \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  quay.io/vektorlab/ctop:latest

在交互终端执行即进入 ctop 界面(--rm 退出即删,不留现场)。镜像拉取与版本验证(实测回显,注意镜像内 build 号为 59f00dd,与 Releases 二进制的 11a1cb1 不同但同为 0.7.7):

docker run --rm quay.io/vektorlab/ctop:latest -v
ctop version 0.7.7, build 59f00dd go1.18

⚠️ 注意:TUI 必须带 -ti 在交互终端运行;后台/无人值守场景只适合用 -v、-h 这类非交互参数验证。

七、多方案对比与选择建议

维度A 官方二进制B azlux apt 仓库C Docker 镜像
版本0.7.7(build 11a1cb1)0.7.7(同 build)0.7.7(build 59f00dd)
是否需联网需(GitHub)需(azlux)需(quay.io)
安装方式curl + chmodapt 包管理docker run,零落盘
文件位置/usr/local/bin/ctop/usr/bin/ctop不落宿主机盘
卸载rm 一个文件apt remove docker-ctop镜像 rmi / --rm 自清理
升级覆盖下载新版apt upgrade(随仓库)拉 latest 新镜像
主要风险无包管理记录⚠️ 仓库无 Ubuntu 套件,需手写 bookworm每次运行起容器

选择建议:可联网服务器优先方案 A(最少依赖、可控);习惯包管理或需要统一卸载记录的选方案 B;宿主机不想留任何文件的选方案 C。

八、安装后配置说明

ctop 安装后无需任何配置即可使用:不带参数运行直接连本机 /var/run/docker.sock(也可用标准 DOCKER_HOST 环境变量改连远程守护进程)。运行期的过滤串、排序字段、列开关等状态可通过界面 S 键保存为配置文件,默认路径 $HOME/.ctop(存在 XDG_* 环境变量时为 $XDG_CONFIG_HOME/ctop/config 或 $HOME/.config/ctop/config)——全部配置项逐键详解见《ctop 0.7.7 配置参数详解》。

九、升级、降级与多版本管理

  • 方案 A 升级/降级:从 Releases 页取目标版本 URL 覆盖下载即可,例如未来发布 v0.8.0 后:curl -fL https://github.com/bcicen/ctop/releases/download/v0.8.0/ctop-0.8.0-linux-amd64 -o /usr/local/bin/ctop(URL 模板固定为 https://github.com/bcicen/ctop/releases/download/<版本>/ctop-<版本>-linux-amd64,版本号以 releases 页实查为准);降级同理换回旧版本 URL。
  • 方案 B 升级/卸载:apt 只能拿到仓库当前版本(0.7.7);apt-get install docker-ctop=0.7.7 可固定版本。
  • 多版本共存:ctop 无内置版本切换机制;利用 PATH 优先级可并存两套(实测 which -a ctop 同时列出 /usr/local/bin/ctop 与 /usr/bin/ctop,/usr/local/bin 优先生效),需要切换时调整两处文件的存废即可。

十、验证与基础使用

安装完成的最终验收:能打印版本、能打开帮助、能进入监控画面。

ctop -v && ctop -h
  -a    show active containers only
  -connector string
        container connector to use (default "docker")
  -f string
        filter containers
  -h    display this help dialog
  -i    invert default colors
  -r    reverse container sort order
  -s string
        select container sort field
  -v    output version information and exit
ctop - interactive container viewer

usage: ctop [options]

options:


available connectors: docker, runc

带初始过滤串启动(实测帧,容器名与数值因机器而异):

ctop -f ctop
  ctop - 05:20:36 UTC   3 containers    filter: ctop
     NAME                           CPU                             MEM                             NET RX/TX                       IO R/W                          PIDS UPTIME
   ⏵ ctop-0.7.7-load                               0%                           3M / 31G            8K / 126B                       0B / 0B                         1    14m7s
   ⏵ ctop-0.7.7-server                             0%                          156M / 31G           68M / 1M                        0B / 0B                         28   14m7s
   ⏵ ctop-0.7.7-web                                0%                          12M / 31G            250K / 663K                     0B / 0B                         15   9m54s

按键操作(排序、过滤、单容器视图、exec 等)的完整实测见《ctop 0.7.7 常用 CLI 命令与工具详解》。

十一、常见问题(FAQ)

Q1:普通用户运行报 permission denied 怎么办?

实测现象(非 docker 组用户启动,界面弹错误框并循环重试):

  ┌ ctop - error ──────────────────────────────────────────────────┐
  │  [05:23:08 UTC] Get "http://unix.sock/info": dial unix /var/run/docker.sock: connect: permission denied  │
  │  [05:23:08 UTC] attempting to reconnect...                     │

解决:把用户加入 docker 组后重新登录(sudo usermod -aG docker <用户名>);或临时用 root 执行。

Q2:ctop -H tcp://127.0.0.1:2375 报 flag provided but not defined: -H?

ctop 0.7.7 没有 -H 参数(部分旧教程有误),实测回显与退出码:

flag provided but not defined: -H
Usage of ctop:
  -a    show active containers only
  -connector string
        container connector to use (default "docker")
  -f string
        filter containers
  -h    display this help dialog
  -i    invert default colors
  -r    reverse container sort order
  -s string
        select container sort field
  -v    output version information and exit

退出码 2。连远程主机改用标准环境变量:DOCKER_HOST=tcp://<主机>:2375 ctop(或 ssh 隧道套接字路径),与 Docker CLI 约定一致。

Q3:azlux 源 apt update 报 does not have a Release file?

见 5.2 排障实录:Ubuntu 套件名(jammy 等)在 azlux 仓库不存在,把 /etc/apt/sources.list.d/azlux.list 里的套件名改为 bookworm 后 apt-get update 即可。

Q4:在脚本/管道里运行 ctop 直接 panic?

实测回显(退出码 2):

panic: open /dev/tty: no such device or address [recovered]
        panic: open /dev/tty: no such device or address

原因:TUI 必须独占终端。解决:交互 SSH 会话中运行;脚本取数改用 docker stats --no-stream。

Q5:-connector runc 启动后一直弹错误框?

机器上没有 runC 状态目录所致,实测弹框内容:open /run/runc: no such file or directory。监控 Docker 容器用默认 -connector docker 即可;runC 连接器仅在直接管理 runC 容器且能访问 /run/runc 的环境使用。

十二、卸载与清理

按安装方案对应卸载,互不影响:

sudo rm -f /usr/local/bin/ctop        # 方案 A
sudo apt-get remove -y docker-ctop   # 方案 B
docker rmi quay.io/vektorlab/ctop:latest   # 方案 C(--rm 运行的实例退出时已自删)
rm -f ~/.ctop                         # 运行期保存过的配置文件(若有)

卸载验证:which -a ctop 无输出且 ctop -v 提示 command not found 即清理干净。

十三、参考链接