在 su 到普通用户之后,当我运行时
podman run --network=podman" -it ubi8
我收到错误
ERRO[0013] failed to move the rootless netns slirp4netns process to the systemd user.slice: Process org.freedesktop.systemd1 exited with status 1
在系统日志 /var/log/messages 中:
Jan 26 12:16:39 ezb5568 dbus-daemon[145488]: Cannot setup inotify for '/root/.local/share/dbus-1/services'; error 'Permission denied'
Jan 26 12:16:39 ezb5568 dbus-daemon[145488]: [session uid=0 pid=145486] Activating service name='org.freedesktop.systemd1' requested by ':1.0' (uid=0 pid=145470 comm="podman run --network=podman")
Jan 26 12:16:39 ezb5568 dbus-daemon[145488]: [session uid=0 pid=145486] Activated service 'org.freedesktop.systemd1' failed: Process org.freedesktop.systemd1 exited with status 1
答案1
以另一个用户身份交互运行 podman
$ sudo -i
# machinectl shell username@
Connected to the local host. Press ^] three times within 1s to exit session.
$ podman run --rm -ti docker.io/library/alpine
/ # cat /etc/alpine-release
3.17.3
/ #
附注:在 Fedora 38 系统上,该命令machinectl
位于软件包中
systemd-容器
$ rpm -qf /usr/bin/machinectl
systemd-container-253-1.fc38.aarch64
以非交互方式作为另一个用户运行 podman
# sudo systemd-run \
--machine=username@ \
--quiet \
--user \
--collect \
--pipe \
--wait \
podman run \
--rm \
docker.io/library/alpine \
echo hello
hello
旁注:在 Fedora 38 系统上,该命令systemd-run
位于软件包中
系统
$ rpm -qf /usr/bin/systemd-run
systemd-253-1.fc38.aarch64
su
以其他用户身份运行 podman 时应避免的原因
至于为什么不使用su
请看博文
当我通过 sudo 或 su 登录用户时,为什么无法运行无根 Podman 容器? https://www.redhat.com/sysadmin/sudo-rootless-podman
答案2
如果您要更改为运行 podman 的另一个用户,则需要以该用户身份进行控制台登录或ssh user@localhost
.使用su
原始用户设置的变量会污染您切换到的用户的 shell 环境。这是 podman 的一个已知问题。我一直在这样做sudo su - user
,但这导致运行 podman 时失败。使用-
or--login
是不够的,需要使用ssh
or 进行控制台登录。有一些解决方法,但根据我的经验,它们并不可靠。