当前位置: 首页 > 面试题库 >

找不到用户root:Docker中的passwd文件中没有匹配的条目

糜鸿风
2023-03-14
问题内容

我有多个Atlassian产品的容器;JIRABitbucketConfluence。当我尝试访问运行中的容器时,通常使用:

docker exec -it -u root ${DOCKER_CONTAINER} bash

使用此命令,我可以照常访问,但是运行脚本提取和压缩日志文件后,我将无法再访问该容器。

摘录自“清理脚本”

这是第一个失败点,脚本每周运行一次(由Jenkins安排)。

docker cp ${CLEAN_UP_SCRIPT} ${DOCKER_CONTAINER}:/tmp/${CLEAN_UP_SCRIPT}
if [ $? -eq 0 ]; then
  docker exec -it -u root ${DOCKER_CONTAINER} bash -c "cd ${LOG_DIR} && /tmp/compressOldLogs.sh ${ARCHIVE_FILE}"
fi

当脚本对Bitbucket容器执行这两行时,结果是:

unable to find user root: no matching entries in passwd file

它在’docker cp’命令上失败,但仅在Bitbucket容器上失败。脚本运行后,“ bitbucket”(在Dockerfile中定义)和“
root”用户均无法访问该容器。

我能够/etc/passwd从容器中复制出来,并且它包含了预期的所有用户。尝试通过uid访问时,出现以下错误:

rpc error: code = 2 desc = oci runtime error: exec failed: process_linux.go:75: starting setns process caused "fork/exec /proc/self/exe: no such file or directory"

用于Bitbucket映像的Dockerfile:

FROM                        java:openjdk-8-jre

ENV BITBUCKET_HOME          /var/atlassian/application-data/bitbucket
ENV BITBUCKET_INSTALL_DIR   /opt/atlassian/bitbucket
ENV BITBUCKET_VERSION       4.12.0
ENV DOWNLOAD_URL            https://downloads.atlassian.com/software/stash/downloads/atlassian-bitbucket-${BITBUCKET_VERSION}.tar.gz

ARG user=bitbucket
ARG group=bitbucket
ARG uid=1000
ARG gid=1000

RUN mkdir -p $(dirname $BITBUCKET_HOME) \
    && groupadd -g ${gid} ${group} \
    && useradd -d "$BITBUCKET_HOME" -u ${uid} -g ${gid} -m -s /bin/bash ${user}

RUN mkdir -p                                ${BITBUCKET_HOME} \
    && mkdir -p                             ${BITBUCKET_HOME}/shared \
    && chmod -R 700                         ${BITBUCKET_HOME} \
    && chown -R ${user}:${group}            ${BITBUCKET_HOME} \
    && mkdir -p                             ${BITBUCKET_INSTALL_DIR}/conf/Catalina \
    && curl -L --silent                     ${DOWNLOAD_URL} | tar -xz --strip=1 -C "$BITBUCKET_INSTALL_DIR" \
    && chmod -R 700                         ${BITBUCKET_INSTALL_DIR}/ \
    && chown -R ${user}:${group}            ${BITBUCKET_INSTALL_DIR}/

${BITBUCKET_INSTALL_DIR}/bin/setenv.sh

USER        ${user}:${group}

EXPOSE      7990
EXPOSE      7999

WORKDIR     $BITBUCKET_INSTALL_DIR
CMD         ["bin/start-bitbucket.sh", "-fg"]

附加信息:

  • Docker版本1.12.0,内部版本8eab29e
  • docker-compose版本1.8.0,内部版本f3628c7
  • 所有容器始终处于运行状态,即使在发生问题后,即使Bitbucket也可以正常运行
  • 重新启动容器后问题消失

问题答案:

此问题是由 docker引擎错误 引起的,但已被 私人跟踪 ,Docker要求用户重新启动引擎!

该错误似乎可能已超过两年!

https://success.docker.com/article/ucp-health-checks-fail-unable-to-find-
user-nobody-no-matching-entries-in-passwd-file-
observed

https://forums.docker.com/t/unable-to-find-user-root-no-matching-entries-in-
passwd-file/26545/7

…我能说的是,某人正在竭尽全力获得更多资金。



 类似资料:
  • 和 sudo apt-get install postgresql postgresql-contrib 我已经成功地安装了这些软件包。然而,在执行sudo su-postgres时,我收到以下错误: 没有用户“postgres”的密码条目 安装似乎没有创建用户postgres,因为它不在/etc/passwd文件中。重新安装软件包不能解决问题。如何添加所需的postgres用户?

  • 问题内容: 我正在尝试执行此查询- 但是我总是会出错 我认为如果用户不存在,则创建新用户。怎么了? 问题答案: 我认为,如果用户不存在,则Grant用法会创建新用户。怎么了? 在以前的mysql版本中就是这种情况。如果您想以新方式进行操作,请参见此答案。如果您想修改系统设置以使其像以前一样工作,请继续阅读。但是,请注意,这是不推荐使用的行为,因为链接文档指出: NO_AUTO_CREATE_USE

  • 我试图在没有aws概要文件设置的远程无服务器服务器上运行python代码。查看boto3文档后,我会说: 我将获得一个新的boto3名称配置文件,但我得到一个错误: secret_class=get_secret(名称、地区、概况) 文件“/metaflow/func\u get\u aws\u secrets.py”,第45行,在get\u secret session=boto3.sessio

  • 我试图一个接一个地读取每个日志条目。这是日志文件的一部分: 这是原木图案 转换模式=%d{dd.MM.yyyy HH:MM:ss,SSS}|%p%t%m|%c%n 我需要从每个条目中获取所有细节,如日期、优先级值、线程、消息和类。这就是我到目前为止所拥有的。 它匹配ok所有条目,但没有stacktrace。我需要如何改进我的正则表达式以获得堆栈跟踪? 所以我需要这样做:

  • 我试着用一根绳子: 并返回该字符串中的所有2字对。即: 但是现在,我能做的就是让它回来: 我如何定义我的同时循环,这样我就可以解释这种缺乏重叠的单词?我的代码如下:(真的,我很高兴它只是返回一个表示它找到了多少字符串子集的int...) 谢谢大家。

  • 问题内容: 在node.js中,我可以列出具有通配符匹配的文件吗? 在fs文档中找不到通配符匹配的信息。 问题答案: Node核心未涵盖此范围。您可以检查该模块的内容。npmjs.org还是查找各种模块的绝佳资源。 用法