【问题标题】:ibmcom/mq docker image backward compatibility issueibmcom/mq docker 镜像向后兼容性问题
【发布时间】:2020-06-04 18:19:29
【问题描述】:

我使用的是 docker 镜像 ibmcom/mq 。 我的撰写文件是:

FROM ibmcom/mq
USER root
# create another client user
# default is app without password
RUN useradd user1 -G mqclient && \
echo user1:passwd | chpasswd

然后当我再次构建最新图像时它突然停止工作。

错误是:

useradd: group 'mqclient' does not exist
ERROR: Service 'mq' failed to build: The command '/bin/sh -c useradd user1 -G mqclient &&     echo user1:passwd | chpasswd' returned a non-zero code: 6

现在 compose 不适用于最新图像(9.1.5.0-r1)版本,但适用于旧版本,例如9.1.4.0-r1

谁能提出替代方案

【问题讨论】:

  • 确保您使用的是最新图像 - ibmcom/mq:9.1.5.0-r1 如果您是并且问题仍然存在,那么请针对图像的 GitHub 存储库提出问题 - github.com/ibm-messaging/mq-container
  • @chughts :这就是我在最新图像(9.1.5.0-r1)给我错误的问题中提到的。
  • 我原以为会出现一个错误,提示您需要成为 root (sudo) 才能运行 useradd,但您收到的错误表明尚未创建组 mqclient。这就是为什么我建议您针对图像的 GitHub 存储库提出问题。
  • 我已经针对 GitHub 存储库创建了一个问题 - github.com/ibm-messaging/mq-container/issues/400

标签: docker ibm-mq


【解决方案1】:

从 9.1.5 开始,容器不再使用基于操作系统的用户或组。这是为了符合云最佳实践。相反,正在使用基于文件的系统。这样,当您将云中的容器部署到生产环境时,您可以切换到基于 LDAP 的系统。

9.1.5容器使用htpasswd,相关文件在/etc/mqm/

对于开发,如果您不打算创建新用户,那么您可以使用 9.1.5 容器。如果你想创建新用户,那么你可以使用 9.1.4 或更早的版本,或者使用 htpasswd 和 bcrypt 来创建用户。

【讨论】: