我是docker / podman的新手。我能够创建基础图像,并将其放入其中(即java,mongodb等),然后使其运行。但是对于我一生来说,我似乎无法在podman图像中创建用户帐户。我在Google上搜索过高低,这就是为什么我在这里。

系统/平台:

centos8

Dockerfile:
FROM fedora:latest
RUN useradd --uid 1000 --user-group -s /bin/bash stress
USER stress
ENTRYPOINT ["/bin/bash"] nter code here

命令:
[stress@localhost PodmanImages]$ podman build .
STEP 1: FROM fedora:latest
Getting image source signatures
Copying blob 00c5bb959822 done
Copying config 8c2e0da7c4 done
Writing manifest to image destination
Storing signatures
STEP 2: RUN useradd --uid 1000 --user-group -s /bin/bash stress
useradd: /etc/passwd.1: lock file already used
useradd: cannot lock /etc/passwd; try again later.
Error: error building at STEP "RUN useradd --uid 1000 --user-group -s /bin/bash stress":
error while running runtime: exit status 1

当我实际进入根据镜像创建的容器并尝试运行useradd命令时,遇到相同的错误。
[stress@localhost PodmanImages]$ podman run --rm --name game -it
registry.fedoraproject.org/fedora /bin/bash
[root@c43c5df75db6 /]# useradd --uid 1000 --user-group -s /bin/bash stress
useradd: /etc/passwd.20: lock file already used
useradd: cannot lock /etc/passwd; try again later.
[root@c43c5df75db6 /]# exit
exit
[stress@localhost PodmanImages]$

我已经删除了在容器中创建的锁定文件,并尝试再次运行useradd命令,但是它始终显示相同的错误。

如果有人能够对此有所了解,我会很高兴!

非常感谢您的考虑!

最佳答案

fuse-overlayfs 中存在一个bug,现已修复,
但该错误修正尚未纳入Centos 8。

解决方法是,您可以将命令行选项--storage-driver=vfs添加为podman的第一个命令行参数。例如
podman --storage-driver=vfs build .
该解决方案在Centos 8上对我有用。

10-08 08:10