我是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上对我有用。