ipmideck 命令启动的主机安装,以及直接运行 Web 服务器的
Docker 容器。它们的行为不同,主机命令给你一个交互式
操作员控制台,而容器只是输出纯文本日志。本页涵盖两者。
主机安装:ipmideck start
在主机安装(pip)中,服务器用 ipmideck 命令启动。主要
命令是 start:
ipmideck 与 ipmideck start 行为完全相同:
0.0.0.0:3000,因此启动后在浏览器中打开
http://<your-ip>:3000。
ipmilink 是同一命令的向后兼容别名,ipmilink start
的行为与 ipmideck start 完全一样。对于所有新内容请使用 ipmideck。ipmideck start 会打开一个交互式操作员控制台。当
同一命令在没有终端的情况下运行时,例如管道输出到文件或在
进程监管程序下运行,它会跳过控制台并改用纯文本日志服务。请参阅
下面的 headless / 非 TTY 模式。
Docker:容器直接运行服务器
Docker 容器不运行ipmideck 命令。它的镜像直接启动 Web 服务器
(uvicorn):
ipmideck CLI,所以任何子命令、标志或
交互式控制台都不适用于 Docker 内部,容器始终只向 stdout 输出纯文本
日志,与 headless 主机模式完全一样。容器绑定到
0.0.0.0:3000,并且需要 --network host 以便它能通过 UDP 端口
623 访问你的 BMC。网络详情请参阅 安装。
用带
IPMIDECK_ 前缀的环境变量以及 /data 上的卷来配置容器,
而不是 CLI 标志,请参阅 配置。已发布的镜像
即将推出;上面的命令正是它上线后你将运行的确切命令。数据目录
ipmideck 将config.yaml、SQLite 数据库和凭据加密密钥写入
单个数据目录。它的位置取决于平台:
- Linux / Docker:
/data - Windows:
./data(相对于你运行ipmideck的目录)
IPMIDECK_DATA_DIR 覆盖此位置:
IPMIDECK_DATA_DIR=/data,因此用卷使该路径
持久化,以便在容器重启之间保留你的配置和历史记录。
环境覆盖
每个覆盖config.yaml 设置的 IPMIDECK_ 前缀环境变量,
无论你在主机上还是在 Docker 中运行,工作方式都相同,请参阅
配置 了解完整列表。其中两个改变 ipmideck 如何
绑定:
| 环境变量 | 效果 |
|---|---|
IPMIDECK_SERVER_HOST | 绑定主机(默认 0.0.0.0)。 |
IPMIDECK_SERVER_PORT | 绑定端口(默认 3000)。 |
环境变量优先于
config.yaml。在主机安装中,命令行上显式的
绑定标志胜过环境变量和文件二者。端口已被占用
如果绑定端口上已有进程在监听,ipmideck 会拒绝启动,而不是 与另一个实例争抢端口。它会将以下内容打印到 stderr 并以状态1 退出:
IPMIDECK_SERVER_PORT
(或 config.yaml 中的 server.port)更改端口,然后重新启动。
地址不可用
另一种不同的故障是你请求绑定的主机无法使用,例如 本机上不存在的地址、仅 IPv6 的接口,或你 无权绑定的特权端口。ipmideck 会单独报告此情况并同样以状态1 退出:
IPMIDECK_SERVER_HOST(或 server.host)的值,它必须是机器上
实际存在的地址,并确保该端口是你被允许绑定的。
用 Ctrl+C 优雅关闭
按 Ctrl+C(它发送SIGINT;SIGTERM 以相同方式处理)来停止
ipmideck。关闭是优雅的:Web 服务器退出其循环,应用程序
lifespan 关闭运行,风扇控制交还给你的 BMC,进程
干净退出,没有 traceback。
在 Docker 中,容器在收到 SIGTERM(docker stop 发送的信号)时停止,因此
当你停止容器时会运行同样的优雅关闭。
重启
重启的工作方式取决于你的操作系统:- Linux(以及其他 POSIX 系统): ipmideck 就地重启:它重新启动一个
全新的进程,重新读取
config.yaml,保持相同的控制终端。 - Windows: 没有就地 re-exec。ipmideck 会干净关闭并打印一条提示, 要求你自己再次运行命令:
ipmideck start,全新的进程会重新读取
config.yaml 并采用新设置。