
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Keycloak Docker镜像是Keycloak服务器的容器化版本。Keycloak是一款开源的身份和访问管理解决方案,提供用户认证、授权、单点登录(SSO)等功能,适用于保护Web应用和API。
独立模式启动
bashdocker run jboss/keycloak
暴露到本地
将容器的8080端口映射到本地,以便通过localhost访问:
bashdocker run -p 8080:8080 jboss/keycloak
默认情况下未创建管理员账户,需通过环境变量指定初始用户名和密码:
bashdocker run -e KEYCLOAK_USER=<用户名> -e KEYCLOAK_PASSWORD=<密码> jboss/keycloak
也可在运行中的容器上创建账户:
bashdocker exec <容器ID> keycloak/bin/add-user-keycloak.sh -u <用户名> -p <密码> docker restart <容器ID>
支持H2、MySQL、PostgreSQL和MariaDB,通过DB_VENDOR环境变量指定数据库类型:
h2:嵌入式H2数据库(默认)postgres:PostgreSQL数据库mysql:MySQL数据库mariadb:MariaDB数据库若未指定DB_VENDOR,镜像将尝试自动检测数据库(基于网络主机名或特定环境变量)。
通用数据库环境变量
DB_ADDR:数据库主机名(可选)DB_PORT:数据库端口(可选,默认使用数据库默认端口)DB_DATABASE:数据库名称(可选,默认keycloak)DB_USER:数据库用户名(可选,默认keycloak)DB_PASSWORD:数据库密码(可选,默认password)MySQL示例
bashdocker network create keycloak-network
bashdocker run --name mysql -d --net keycloak-network \ -e MYSQL_DATABASE=keycloak \ -e MYSQL_USER=keycloak \ -e MYSQL_PASSWORD=password \ -e MYSQL_ROOT_PASSWORD=root_password \ mysql
bashdocker run --name keycloak --net keycloak-network jboss/keycloak
若MySQL实例名称非
mysql,需指定DB_ADDR环境变量:-e DB_ADDR=<mysql实例名称>
PostgreSQL示例
bashdocker network create keycloak-network
bashdocker run -d --name postgres --net keycloak-network \ -e POSTGRES_DB=keycloak \ -e POSTGRES_USER=keycloak \ -e POSTGRES_PASSWORD=password \ postgres
bashdocker run --name keycloak --net keycloak-network jboss/keycloak
若PostgreSQL实例名称非
postgres,需指定DB_ADDR环境变量
MariaDB示例
bashdocker network create keycloak-network
bashdocker run -d --name mariadb --net keycloak-network \ -e MYSQL_ROOT_PASSWORD=password \ -e MYSQL_DATABASE=keycloak \ -e MYSQL_USER=keycloak \ -e MYSQL_PASSWORD=password \ mariadb
bashdocker run --name keycloak --net keycloak-network jboss/keycloak
若MariaDB实例名称非
mariadb,需指定DB_ADDR环境变量
指定JDBC参数
可通过JDBC_PARAMS环境变量配置数据库连接参数:
bashdocker run --name keycloak -e DB_VENDOR=postgres -e JDBC_PARAMS='connectTimeout=30' jboss/keycloak
扩展Keycloak镜像,将主题文件添加到/opt/jboss/keycloak/themes目录。
扩展Keycloak镜像,将提供者文件添加到/opt/jboss/keycloak/standalone/deployments/目录。
通过环境变量替换默认发现协议:
JGROUPS_DISCOVERY_PROTOCOL:发现协议名称(如DNS_PING)JGROUPS_DISCOVERY_PROPERTIES:协议属性(格式:PROP1=FOO,PROP2=BAR)示例(使用DNS_PING):
bashdocker run \ -e JGROUPS_DISCOVERY_PROTOCOL=DNS_PING \ -e JGROUPS_DISCOVERY_PROPERTIES=dns_query=keycloak.myproject.svc.cluster.local \ jboss/keycloak
指定主机名
生产环境建议设置固定主机名:
bashdocker run -e KEYCLOAK_HOSTNAME=keycloak.example.com jboss/keycloak
指定端口
自定义HTTP和HTTPS端口:
bashdocker run -e KEYCLOAK_HTTP_PORT=8081 -e KEYCLOAK_HTTPS_PORT=8443 jboss/keycloak
日志级别配置
KEYCLOAK_LOGLEVEL:Keycloak日志级别(默认INFO)ROOT_LOGLEVEL:容器日志级别(默认INFO)支持的级别:ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, WARN
运行时修改日志级别:
bash# 进入容器 docker exec -it <容器ID> /bin/bash # 修改根日志级别 ./keycloak/bin/jboss-cli.sh --connect --command='/subsystem=logging/root-logger=ROOT:change-root-log-level(level=DEBUG)' # 修改Keycloak日志级别 ./keycloak/bin/jboss-cli.sh --connect --command='/subsystem=logging/logger=org.keycloak:write-attribute(name=level,value=DEBUG)'
启用代理地址转发
在代理服务器后运行时启用:
bashdocker run -e PROXY_ADDRESS_FORWARDING=true jboss/keycloak
配置TLS(SSL)
挂载TLS证书和私钥到/etc/x509/https目录:
tls.crt:证书文件tls.key:私钥文件示例:
bashdocker run -v /path/to/tls:/etc/x509/https jboss/keycloak
若需配置 Mutual TLS,可挂载CA bundle并设置X509_CA_BUNDLE环境变量指向CA文件。
该镜像基于jboss/base-jdk镜像构建,后者在jboss/base镜像基础上添加了OpenJDK分发版。
通过构建参数指定GitHub仓库和分支:
bashdocker build --build-arg GIT_REPO=keycloak/keycloak --build-arg GIT_BRANCH=master .
指定自定义Keycloak分发包地址:
bashdocker build --build-arg KEYCLOAK_DIST=[***] .
以下是 calverley/keycloak 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务