
kasmweb/postgres本镜像是由 Kasm Technologies 维护的 PostgreSQL 数据库镜像,基于官方 PostgreSQL 镜像构建,包含 pg_audit 审计扩展及其他定制化修改,旨在提供增强的数据库审计能力和灵活的配置选项。
pg_audit,可细粒度记录数据库活动(如 DDL、DML 操作、用户登录/退出等)。pg_audit 实现合规性审计,支持按操作类型(如 ddl、write、read)、用户角色、数据库对象等维度配置审计规则。pg_audit,镜像启动时可自动启用扩展(需配置)。bashdocker run -d \ --name kasm-postgres \ -e POSTGRES_PASSWORD=mysecretpassword \ -p 5432:5432 \ kasmtech/postgres:latest
通过挂载卷(Volume)持久化数据库数据,避免容器删除后数据丢失:
bashdocker run -d \ --name kasm-postgres \ -e POSTGRES_PASSWORD=mysecretpassword \ -v /path/on/host/postgres-data:/var/lib/postgresql/data \ # 持久化数据目录 -p 5432:5432 \ kasmtech/postgres:latest
支持官方 PostgreSQL 镜像的所有标准环境变量,核心变量如下:
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
POSTGRES_DB | 初始化数据库名称 | postgres |
POSTGRES_USER | 数据库管理员用户名 | postgres |
POSTGRES_PASSWORD | 管理员用户密码(必填) | 无 |
POSTGRES_INITDB_ARGS | initdb 命令额外参数(如字符集配置) | 无 |
针对 pg_audit 及定制化配置的扩展变量:
| 环境变量名 | 说明 | 默认值 |
|---|---|---|
KASM_PGAUDIT_ENABLE | 是否启用 pg_audit 扩展(true/false) | true |
KASM_PGAUDIT_LOG | pg_audit 审计日志级别(如 ddl,write) | ddl |
KASM_POSTGRES_CONFIG_EXTRA | 额外的 PostgreSQL 配置参数(键值对,逗号分隔,如 max_connections=100,shared_buffers=256MB) | 无 |
yamlversion: '3.8' services: postgres: image: kasmtech/postgres:latest container_name: kasm-postgres restart: always environment: POSTGRES_USER: admin POSTGRES_PASSWORD: ${DB_PASSWORD} # 建议通过环境变量文件传入,避免明文 POSTGRES_DB: appdb KASM_PGAUDIT_ENABLE: "true" KASM_PGAUDIT_LOG: "ddl, write, function" # 审计 DDL、写操作及函数调用 KASM_POSTGRES_CONFIG_EXTRA: "max_connections=200,log_min_messages=notice" ports: - "5432:5432" volumes: - postgres-data:/var/lib/postgresql/data # 命名卷持久化数据 networks: - app-network networks: app-network: driver: bridge volumes: postgres-data: # 自动创建命名卷
若已设置 KASM_PGAUDIT_ENABLE=true,镜像启动时会自动加载 pg_audit 扩展并应用 KASM_PGAUDIT_LOG 配置。例如:
bashdocker run -d \ --name kasm-postgres \ -e POSTGRES_PASSWORD=secret \ -e KASM_PGAUDIT_ENABLE=true \ -e KASM_PGAUDIT_LOG="ddl, write, read" \ # 审计 DDL、写操作、读操作 kasmtech/postgres:latest
如需更细粒度控制 pg_audit 规则,可通过以下步骤修改配置:
进入容器:
bashdocker exec -it kasm-postgres bash
编辑 PostgreSQL 配置文件:
bashvi /var/lib/postgresql/data/postgresql.conf
调整 pg_audit 配置(示例):
ini# 启用 pg_audit(镜像默认已配置,无需重复设置) shared_preload_libraries = 'pg_audit' # 确保包含 pg_audit # 审计规则配置 pg_audit.log = 'ddl, write, function' # 审计 DDL、写操作、函数调用 pg_audit.log_catalog = on # 审计系统目录操作 pg_audit.log_parameter = on # 记录 SQL 参数值 pg_audit.log_relation = on # 记录关联表名
重启 PostgreSQL 服务:
bashsu - postgres -c "pg_ctl reload"
kasmtech/postgres:16 对应 PostgreSQL 16.x)。pg_dump 工具或第三方备份方案(如 WAL-G)实现。pg_audit 日志默认写入 PostgreSQL 日志文件,需配置日志轮转(如 logrotate)避免磁盘占满。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务