名称¶
podman-unshare - 在修改过的用户命名空间内运行命令
简介¶
podman unshare [选项] [命令]
描述¶
在新用户命名空间中启动一个进程(默认是 $SHELL)。用户命名空间被配置为使调用用户的 UID 和主 GID 分别显示为 UID 0 和 GID 0。在 /etc/subuid
和 /etc/subgid
中与该用户和组匹配的任何范围也会在 newuidmap(1) 和 newgidmap(1) 助手的帮助下映射为它们自身。
podman unshare 对于故障排除非特权操作以及手动清除与镜像和容器相关的存储和其他数据很有用。
它对于使用 podman mount 命令也很有用。如果非特权用户想要挂载和使用容器,那么他们需要执行 podman unshare。除非用户在 podman unshare 会话中运行,否则对于非特权用户执行 podman mount 会失败。
unshare 会话定义了两个环境变量
CONTAINERS_GRAPHROOT: 持久容器数据的路径。
CONTAINERS_RUNROOT: 临时容器数据的路径。
重要提示:此命令不适用于远程 Podman 客户端。
选项¶
--help, -h¶
打印用法说明
--rootless-netns¶
加入用于 netavark 网络的无根网络命名空间。它可用于通过 IP 地址(桥接网络)连接到无根容器。否则,从主机网络命名空间无法实现此操作。
退出代码¶
来自 podman unshare
的退出代码提供了关于容器为何未能运行或为何退出的信息。当 podman unshare
命令以非零代码退出时,退出代码遵循 chroot
标准,请参见下文
125 错误出在 podman 本身
$ podman unshare --foo; echo $?
Error: unknown flag: --foo
125
126 执行包含的命令,但命令无法调用
$ podman unshare /etc; echo $?
Error: fork/exec /etc: permission denied
126
127 执行包含的命令,但命令找不到
$ podman unshare foo; echo $?
Error: fork/exec /usr/bin/bogus: no such file or directory
127
退出代码 包含的命令退出代码
$ podman unshare /bin/sh -c 'exit 3'; echo $?
3
示例¶
在无根用户命名空间中执行指定命令
$ podman unshare id
uid=0(root) gid=0(root) groups=0(root),65534(nobody)
显示无根容器的用户命名空间映射
$ podman unshare cat /proc/self/uid_map /proc/self/gid_map
0 1000 1
1 10000 65536
0 1000 1
1 10000 65536
显示无根容器在用户命名空间中的无根网络命名空间信息
$ podman unshare --rootless-netns ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: tap0: <BROADCAST,UP,LOWER_UP> mtu 65520 qdisc fq_codel state UNKNOWN group default qlen 1000
link/ether aa:8c:0b:73:98:f6 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.100/24 brd 10.0.2.255 scope global tap0
valid_lft forever preferred_lft forever
inet6 fd00::a88c:bff:fe73:98f6/64 scope global dynamic mngtmpaddr
valid_lft 86389sec preferred_lft 14389sec
inet6 fe80::a88c:bff:fe73:98f6/64 scope link
valid_lft forever preferred_lft forever
另请参阅¶
podman(1), podman-mount(1), namespaces(7), newuidmap(1), newgidmap(1), user_namespaces(7)