
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
为ARM设备(如树莓派4)预构建的Keycloak服务器Docker镜像。描述内容基于官方Keycloak镜像:https://hub.docker.com/r/jboss/keycloak%E3%80%82
版本 >= 17.0.0 及 latest 标签请遵循新指南:[*] legacy 标签。**
bashdocker run kyberpunk/keycloak
要在本地访问Keycloak,需映射8080端口:
bashdocker run -p 8080:8080 kyberpunk/keycloak
默认未创建管理员用户,无法登录管理控制台。需通过环境变量设置初始用户名和密码:
bashdocker run -e KEYCLOAK_USER=<用户名> -e KEYCLOAK_PASSWORD=<密码> kyberpunk/keycloak
也可在运行中的容器上创建账户:
bashdocker exec <容器ID> /opt/jboss/keycloak/bin/add-user-keycloak.sh -u <用户名> -p <密码>
然后重启容器:
bashdocker restart <容器ID>
通过文件提供用户名和密码
在上述两个环境变量后添加 _FILE(即 KEYCLOAK_USER_FILE 和 KEYCLOAK_PASSWORD_FILE),可通过文件提供凭据,适用于Docker Swarm的配置和密钥管理。
创建管理员账户并导入已导出的领域:
bashdocker run -e KEYCLOAK_USER=<用户名> -e KEYCLOAK_PASSWORD=<密码> \ -e KEYCLOAK_IMPORT=/tmp/example-realm.json -v /tmp/example-realm.json:/tmp/example-realm.json kyberpunk/keycloak
如需导出已创建/更新的领域,需确保容器已挂载卷。例如,启动Keycloak:
bashdocker run -d -p 8180:8080 -e KEYCLOAK_USER=admin -e \ KEYCLOAK_PASSWORD=admin -v $(pwd):/tmp --name kc \ kyberpunk/keycloak
执行导出命令(使用 -Djboss.socket.binding.port-offset=100 避免端口冲突):
bashdocker exec -it kc /opt/jboss/keycloak/bin/standalone.sh \ -Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=export \ -Dkeycloak.migration.provider=singleFile \ -Dkeycloak.migration.realmName=my_realm \ -Dkeycloak.migration.usersExportStrategy=REALM_FILE \ -Dkeycloak.migration.file=/tmp/my_realm.json
更多导出选项详见Keycloak官方文档:导出与导入。
支持H2、MySQL、PostgreSQL、MariaDB、Oracle或Microsoft SQL Server作为数据库。可通过 DB_VENDOR 环境变量指定数据库类型,支持值:
h2:嵌入式H2数据库postgres:PostgreSQL数据库mysql:MySQL数据库mariadb:MariaDB数据库oracle:Oracle数据库mssql:Microsoft SQL Server数据库若未指定 DB_VENDOR,镜像将自动检测:
getent hosts 检测默认主机名(postgres、mysql等,需使用用户定义网络)_ADDR 环境变量(如 POSTGRES_ADDR,已弃用)检测失败时默认使用嵌入式H2数据库。
通用数据库配置变量(默认值因数据库而异):
DB_ADDR:数据库主机名(可选,PostgreSQL支持逗号分隔的多主机故障转移)DB_PORT:数据库端口(可选,默认使用数据库默认端口)DB_DATABASE:数据库名称(可选,默认 keycloak)DB_SCHEMA:数据库模式名称(可选,PostgreSQL默认 public)DB_USER:数据库用户名(可选,默认空)DB_USER_FILE:通过文件指定数据库用户名(替代 DB_USER)DB_PASSWORD:数据库密码(可选,默认空)DB_PASSWORD_FILE:通过文件指定数据库密码(替代 DB_PASSWORD)创建用户定义网络
bashdocker network create keycloak-network
启动MySQL实例
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
启动Keycloak实例
bashdocker run --name keycloak --net keycloak-network kyberpunk/keycloak
若MySQL实例名称非 mysql,需指定 DB_ADDR 环境变量。
创建用户定义网络
bashdocker network create keycloak-network
启动PostgreSQL实例
bashdocker run -d --name postgres --net keycloak-network -e POSTGRES_DB=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password postgres
启动Keycloak实例
bashdocker run --name keycloak --net keycloak-network kyberpunk/keycloak -e DB_USER=keycloak -e DB_PASSWORD=password
若PostgreSQL实例名称非 postgres,需指定 DB_ADDR 环境变量。
创建用户定义网络
bashdocker network create keycloak-network
启动MariaDB实例
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
启动Keycloak实例
bashdocker run --name keycloak --net keycloak-network kyberpunk/keycloak
若MariaDB实例名称非 mariadb,需指定 DB_ADDR 环境变量。
需提供Oracle JDBC驱动。
下载Oracle JDBC驱动
ojdbc.jar创建用户定义网络
bashdocker network create keycloak-network
启动Oracle实例
bashdocker run -d --name oracle --net keycloak-network -p 1521:1521 carloscastillo/rgt-oracle-xe-11g
启动Keycloak实例
bashdocker run -d --name keycloak --net keycloak-network -p 8080:8080 -v /path/to/jdbc/driver:/opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver kyberpunk/keycloak
或通过 docker cp 复制驱动:
bashdocker cp ojdbc.jar kyberpunk/keycloak:/opt/jboss/keycloak/modules/system/layers/base/com/oracle/jdbc/main/driver/ojdbc.jar
默认环境配置:
DB_ADDR: oracleDB_PORT: 1521DB_DATABASE: XEDB_USER: SYSTEMDB_PASSWORD: oracle创建用户定义网络
bashdocker network create keycloak-network
启动SQL Server实例
bashdocker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password!23' -d --name mssql --net keycloak-network mcr.microsoft.com/mssql/server
创建数据库(SQL Server不支持环境变量创建数据库):
bashdocker run -d --name mssql-scripts --net keycloak-network mcr.microsoft.com/mssql-tools /bin/bash -c 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P "Password!23" -Q "create database Keycloak"; do sleep 5; done'
启动Keycloak实例
bashdocker run --name keycloak --net keycloak-network -p 8080:8080 -e DB_VENDOR=mssql -e DB_USER=sa -e DB_PASSWORD=Password!23 -e DB_ADDR=mssql -e DB_DATABASE=Keycloak -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin kyberpunk/keycloak
可通过 JDBC_PARAMS 环境变量指定JDBC连接参数,例如:
bashdocker run --name keycloak -e DB_VENDOR=postgres -e JDBC_PARAMS='connectTimeout=30' kyberpunk/keycloak
各数据库JDBC参数详情:
扩展Keycloak镜像,将主题添加到 /opt/jboss/keycloak/themes 目录。
环境变量配置:
KEYCLOAK_WELCOME_THEME:欢迎页主题(需存在)KEYCLOAK_DEFAULT_THEME:全局默认主题(默认 keycloak)扩展Keycloak镜像,将提供程序添加到 /opt/jboss/keycloak/standalone/deployments/ 目录。
在 /opt/jboss/startup-scripts 目录放置脚本,支持:
.cli 脚本(建议使用离线模式,默认使用 standalone-ha.xml 配置)chmod +x)脚本按字母顺序执行。
dockerfileFROM keycloak COPY custom-scripts/ /opt/jboss/startup-scripts/
bashdocker run -v /some/dir/my-script.cli:/opt/jboss/startup-scripts/my-script.cli kyberpunk/keycloak
通过 JAVA_OPTS_APPEND 环境变量添加JVM启动参数,例如启用 upload_script 特性:
bashdocker run -e JAVA_OPTS_APPEND="-Dkeycloak.profile.feature.upload_scripts=enabled" kyberpunk/keycloak
通过环境变量配置集群发现协议:
JGROUPS_DISCOVERY_PROTOCOL:发现协议名称(如 dns.DNS_PING)JGROUPS_DISCOVERY_PROPERTIES:协议属性(格式 PROP1=FOO,PROP2=BAR)JGROUPS_DISCOVERY_PROPERTIES_DIRECT:JBoss CLI格式属性(格式 {PROP1=>FOO,PROP2=>BAR})JGROUPS_TRANSPORT_STACK:传输栈(udp 或 tcp,默认 tcp)注意:
JGROUPS_DISCOVERY_PROPERTIES和JGROUPS_DISCOVERY_PROPERTIES_DIRECT不可同时设置。
bashdocker run kyberpunk/keycloak
bashdocker run \ -e JGROUPS_DISCOVERY_PROTOCOL=dns.DNS_PING -e \ JGROUPS_DISCOVERY_PROPERTIES=dns_query=keycloak.myproject.svc.cluster.local \ kyberpunk/keycloak
CACHE_OWNERS_COUNT:分布式缓存所有者数量(默认1)CACHE_OWNERS_AUTH_SESSIONS_COUNT:AuthenticationSessions副本数量(默认不复制)将密钥文件挂载到 $JBOSS_HOME/secrets 目录,用于消费Kubernetes/OpenShift集群密钥。
bashdocker run -e KEYCLOAK_FRONTEND_URL=https://keycloak.example.com kyberpunk/keycloak
KEYCLOAK_LOGLEVEL:Keycloak日志级别(默认 INFO)ROOT_LOGLEVEL:容器日志级别(默认 INFO)支持级别:ALL、DEBUG、ERROR、FATAL、INFO、OFF、TRACE、WARN。
运行时修改日志级别:
bash./keycloak/bin/jboss-cli.sh --connect --command='/subsystem=logging/console-handler=CONSOLE:change-log-level(level=DEBUG)' ./keycloak/bin/jboss-cli.sh --connect --command='/subsystem=logging/root-logger=ROOT:change-root-log-level(level=DEBUG)' ./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 kyberpunk/keycloak
挂载TLS证书和私钥到 /etc/x509/https 目录(文件名为 tls.crt 和 tls.key)。
添加CA证书:挂载CA文件并设置 X509_CA_BUNDLE 环境变量(空格分隔路径)。
通过 KEYCLOAK_STATISTICS 环境变量启用指标(db、http、jgroups 或 all):
bashdocker run -e KEYCLOAK_STATISTICS=db,http kyberpunk/keycloak
设置环境变量启用Java调试:
bashdocker run -e DEBUG=true -e DEBUG_PORT='*:8787' -p 8080:8080 -p '8787:8787' kyberpunk/keycloak
基于 registry.access.redhat.com/ubi8-minimal 基础镜像构建。
bashdocker build --build-arg GIT_REPO=keycloak/keycloak --build-arg GIT_BRANCH=main .
bashdocker build --build-arg KEYCLOAK_DIST=http://172.17.0.1:8000/keycloak-4.1.0.Final-SNAPSHOT.tar.gz .
支持 docker start 和 docker stop,但配置变更需创建新容器。
以下是 kyberpunk/keycloak 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

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