#docker #tui #terminal #podman #tokio

app oxker

一个简单的 tui,用于查看和控制 docker 容器

29 个版本 (6 个破坏性)

0.7.0 2024年8月1日
0.6.4 2024年5月25日
0.6.2 2024年3月31日
0.4.0 2023年11月21日
0.1.2 2022年7月23日

#53 in 命令行工具

Download history 167/week @ 2024-05-03 57/week @ 2024-05-10 42/week @ 2024-05-17 282/week @ 2024-05-24 46/week @ 2024-05-31 36/week @ 2024-06-07 28/week @ 2024-06-14 19/week @ 2024-06-21 11/week @ 2024-06-28 11/week @ 2024-07-05 11/week @ 2024-07-12 5/week @ 2024-07-19 100/week @ 2024-07-26 199/week @ 2024-08-02 49/week @ 2024-08-09 39/week @ 2024-08-16

每月388次下载

MIT 许可证

405KB
8K SLoC


oxker

一个简单的 tui,用于查看和控制 docker 容器

使用 Rust 构建,大量使用 Rust,并重用 ratatui & Bollard

下载 & 安装

Cargo

crates.io 上发布,因此如果您已安装 cargo,只需运行

cargo install oxker

Docker

Docker Hubghcr.io 上发布,为 linux/amd64linux/arm64linux/arm/v6 构建了镜像

通过 Docker Hub

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always mrjackwills/oxker

通过 ghcr.io

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock:ro --pull=always ghcr.io/mrjackwills/oxker

Nix

使用 nix flakes,可以直接运行 oxker

nix run nixpkgs#oxker

如果没有 flakes,您可以使用以下命令构建一个包含 oxker 的 shell

nix-shell -p oxker

AUR

您可以从 AUR 安装 oxker,使用 AUR 辅助工具

paru -S oxker

预构建

查看 预构建的二进制文件

或,下载 & 安装 (x86_64 一行脚本)

wget https://www.github.com/mrjackwills/oxker/releases/latest/download/oxker_linux_x86_64.tar.gz &&
tar xzvf oxker_linux_x86_64.tar.gz oxker &&
install -Dm 755 oxker -t "${HOME}/.local/bin" &&
rm oxker_linux_x86_64.tar.gz oxker

或,自动选择平台、下载和安装(到 $HOME/.local/bin

在 shell 中运行之前,应始终验证 脚本内容

curl https://raw.githubusercontent.com/mrjackwills/oxker/main/install.sh | bash

运行

oxker

应用程序控制

按钮 结果
( tab )( shift+tab ) 更改面板,点击面板也会更改所选面板。
( ↑ ↓ )( j k )( PgUp PgDown )( Home End ) 在所选面板中更改所选行,鼠标滚轮也可以更改所选行。
(enter) 运行所选的Docker命令。
( 1-9 ) 按标题排序容器,点击标题也会排序所选列。
( 0 ) 停止排序。
( F1 )( / ) 进入过滤模式。
(e) 进入所选容器执行 - Windows上不可用。
(h) 切换帮助菜单。
(m) 切换鼠标捕获 - 如果禁用,则可以选中屏幕上的文本。
(q) 退出。
(s) 将日志保存到 $HOME/[container_name]_[timestamp].log,或由 --save-dir 设置的目录。
(esc) 关闭对话框。

可用的命令行参数

参数 结果
-d[数字> 0] 设置Docker信息的最低更新间隔(毫秒)。默认为1000(1秒)。
-r 显示原始日志。默认情况下,删除ANSI格式化(与 -c 冲突)。
-c 尝试为日志着色(与 -r 冲突)。
-t 从每条日志条目中删除时间戳。
-s 如果通过Docker运行,将显示oxker容器。
-g 无TUI,本质上是一种具有有限功能性的调试模式,目前如此。
--host [字符串] 使用自定义主机名连接到Docker。默认为 /var/run/docker.sock。如果设置了环境变量 $DOCKER_HOST,则使用它。
--save-dir[字符串] 将导出的日志保存到自定义目录。默认为 $HOME
--use-cli 在进入容器时使用Docker应用程序,而不是Docker API。

构建步骤

x86_64

cargo build --release

树莓派

需要docker和cross-rs

64位树莓派(pi 4,pi zero w 2)

cross build --target aarch64-unknown-linux-gnu --release

32位树莓派(pi zero w)

已在pi zero w上测试并通过,运行Raspberry Pi OS 32位,如果日志行数达到数千行,则初始日志解析可能需要较长时间,建议运行带有5000的-d参数

cross build --target arm-unknown-linux-musleabihf --release

如果没有可用内存信息,请尝试将 /boot/cmdline.txt

cgroup_enable=cpuset cgroup_enable=memory

查看 https://forums.raspberrypi.com/viewtopic.php?t=203128https://github.com/docker/for-linux/issues/1112

在其他平台上未测试

测试

尚未测试,需要工作

已完成工作,迄今为止测试没有影响任何正在运行的容器,但这可能在将来改变。

cargo test

运行一些示例Docker镜像

使用docker/docker-compose.yml;

docker compose -f ./docker/docker-compose.yml up -d

或单独

docker run --name redis -d redis:alpine3.19
docker run --name postgres -e POSTGRES_PASSWORD=never_use_this_password_in_production -d postgres:alpine3.19
docker run -d --hostname my-rabbit --name rabbitmq rabbitmq:3

依赖项

~20–33MB
~523K SLoC