我正在绞尽脑汁想弄清楚这一点。
在新安装的 Fedora 32 下,以下最小容器无法正常执行:
FROM centos:7
RUN yum install -y sudo && yum clean all -y
RUN useradd -m test
RUN sudo -u test true
要测试这一点,请执行:
podman build .
结果是:
STEP 4: RUN sudo -u test true
sudo: PAM account management error: Authentication service cannot retrieve authentication info
Error: error building at STEP "RUN sudo -u test true": error while running runtime: exit status 1
现在我想知道,Fedora 32 有什么特别之处?我很确定这在 31 下是可以工作的。由于所涉及的版本及其环境没有变化,唯一的区别可能是 podman。但是 podman 与容器内部sudo
的调用(或一般的 PAM)有什么关系?sudo
(由于我无法创建标签“podman”,因此该问题被标记为“docker”)
答案1
好的,这是我经过几个小时痛苦的调试后才弄清楚的。
/home
在尝试此操作之前,我已经换了一台新笔记本电脑。我通过将旧笔记本电脑复制到新笔记本电脑来完成此操作。- 我的新主目录中的图像缓存包含某种错误。
podman
没有抱怨或尝试重新下载图像,但我可以看到(与另一台机器相比)哈希值不同。图像内部缺少/etc/shadow
- 但我不知道为什么或如何发生这种情况。 - 彻底清除所有
podman
缓存并重新下载后,我得到了正确的图像,一切恢复正常。
因此,这肯定是将 podman 镜像从 Fedora 31 复制到 32 时出现的非常具体的错误。镜像在某种程度上是完整的。我可以运行它。但它完全错过了至少一个关键文件。相当奇怪。