Keycloak Docker 映像基本 unix 命令不可用

Posted

技术标签:

【中文标题】Keycloak Docker 映像基本 unix 命令不可用【英文标题】:Keycloak Docker image basic unix commands not available 【发布时间】:2021-08-04 22:07:43 【问题描述】:

我已经通过运行一个使用 docker 映像 jboss/keycloak:9.0.0.yml 文件来设置我的 Keycloak 识别服务器。

现在我想进入容器并修改一些文件以进行一些测试。

不幸的是,在我进入运行的容器后,我意识到 一些非常基本的 UNIX 命令,如 sudovi(以及更多)没有找到(以及apt-getyum 之类的命令,我曾经下载命令包并失败)。

根据this question看来,容器的底层操作系统(Redhat Universal Base Image)使用命令microdnf管理软件,但是很遗憾当我尝试使用此命令执行任何操作时,我收到以下消息:

错误:创建失败:/var/cache/yum/metadata

您能否针对我的情况提出任何解决方法?我只需要使用像vi 这样的文本编辑器命令,并为我的用户使用root 权限(所以像sudosuchmod 这样的命令)。提前致谢。

【问题讨论】:

你到底需要做什么? 我希望能够修改 Jboss 服务器的standalone.xml 并为服务器生成一些证书,以防万一我想挂载这些证书和修改后的独立构建时从我的系统到容器的 .xml 文件 在 docker 文件上使用 cp 那些文件还不够吗? 没错,AFAIK 对于证书,您无论如何都必须重新创建容器,因为 Keycloak 一开始就构建了 trushstore,但不要引用我的话。 不客气;也许其他人有更好的解决方案,我很想知道,因为我面临(并且仍然面临)同样的痛苦 【参考方案1】:

看起来您正在尝试在 docker 世界中使用来自非 docker(老派)世界的方法。那是不对的。通常,您不需要去容器并在那里编辑任何配置文件 - 更改很可能会丢失(这取决于容器配置)。容器通常通过环境变量或卷配置。

如何使用 TLS 证书的示例:Keycloak Docker HTTPS required

https://hub.docker.com/r/jboss/keycloak/ 也是检查可用环境变量的良好起点,它可以帮助您实现所需的内容。例如PROXY_ADDRESS_FORWARDING=true 启用选项,当您可以在负载均衡器后面运行 Keycloak 容器而无需接触任何配置文件时。

我想说在构建中添加自己的配置文件也不是最好的选择 - 您必须维护自己的图像。只需使用卷并使用您自己的主机操作系统文件系统中的配置文件“覆盖”容器中的默认配置文件,例如:

-v /host-os-path/my-custom-standalone-ha.xml:/opt/jboss/keycloak/standalone/configuration/standalone-ha.xml

【讨论】:

感谢您的建议,确实我在 .yml 文件中安装了包含证书和修改后的standalone-ha.xml 文件的独立配置文件夹,这似乎是我应该这样做的方式首先是它。

以上是关于Keycloak Docker 映像基本 unix 命令不可用的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 keycloak REST API 方法 *404*

使用 Docker 时未加载 Keycloak SPI 提供程序和层

M1 mac 无法运行 jboss/keycloak docker 镜像

使用自定义基本 URL 为 Keycloak docker 配置反向代理

Docker - 无法连接到正在运行的映像

为啥 Keycloak 会不断重新部署相同的 .jar 文件?