我可以使用 `podman` 运行 bash rootless 吗?
Can I run bash rootless with `podman`?
简单的场景是这样的;在本教程中:
- Using
podman
without sudo
- 更新#1 ...出现的问题与正确激活有关
cgroups2
在 Ubuntu.
到 运行 bash
在 Ubuntu 容器中不需要 root/sudo
权限。命令行是:
podman run --rm --interactive --tty ubuntu bash
此命令带来以下结果:
$ podman run --rm --interactive --tty ubuntu:20.10 bash
Completed short name "ubuntu" with unqualified-search registries (origin: /etc/containers/registries.conf)
Trying to pull docker.io/library/ubuntu:20.10...
Getting image source signatures
Copying blob 79e7e9027772 done
Copying blob eed86eef5a46 done
Copying blob 1b553362680b done
Copying config deb373a625 done
Writing manifest to image destination
Storing signatures
Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs
available in user namespace (requested 0:42 for /etc/gshadow):
Check /etc/subuid and /etc/subgid: lchown /etc/gshadow: invalid argument
Error: Error committing the finished image: error adding layer with
blob "sha256:eed86eef5a4687135cb1ba7c55da6af79c9182e8bf59b53a880d1b334515c8e3":
Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs
available in user namespace (requested 0:42 for /etc/gshadow): Check /etc/subuid
and /etc/subgid: lchown /etc/gshadow: invalid argument
这让我们相信一些进一步的权限是必要的(可能不是 root,但是...)。 运行使用 sudo
使用相同的命令证实了这一点——它工作得非常愉快,除了 popdman Ubuntu
图像是 运行s 作为 root
在我的电脑上。不是我期望的快乐结果。
目前这台机器上的/etc/subuid
和/etc/subgid
文件只有几个samba
用户和一个wireshark
用户的条目,如图:
/etc/subgid /etc/subgid
tsmith:100000:65536 tsmith:100000:65536
demo:165536:65536 demo:165536:65536
smbguest:231072:65536 smbguest:231072:65536
wireshark:296608:65536 wireshark:296608:65536
目前我真的没有任何指导。我意识到我需要对 subuid
-s 和 subgid
-s 做一些事情才能让这个例子起作用。到目前为止,我还没有找到一些关于需要什么的提示或文档。除了不直接编辑文件 -- 很公平。
也在上面提到的教程中,是一个非 sudo
示例,查看 subuid
-s:
$ podman unshare cat /proc/self/uid_map
0 1000 1
1 100000 65536
我问自己,用户 #1 只是一个例子还是我错过了一步?当我在这台电脑上做同样的事情时,我看到的是:
$ podman unshare cat /proc/self/uid_map
0 1000 1
没有用户#1,只有用户#0。我要采取什么行动?现在的问题是:
- 如何让容器中的Ubuntu
bash
shell运行无根?
- 最小的变化足以看到
bash
运行 无根。
- 我从哪里开始?
- 我需要做什么?
- 我该怎么做?
请参阅此link,了解如何在 Redhat 上设置无根访问:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/building_running_and_managing_containers/starting-with-containers_building-running-and-managing-containers
我最终 Ubuntu 通过应用本文中的所有步骤来使用无根容器...
这几乎就好像这些点和我以前开始的原始文章中的点一样,所以我真的不能说第一次没有做对哪一点。 post 中的步骤绝对可以完成工作。
确认您的容器是无根的非常重要(恕我直言)。有时您仍然可以 运行 作为 root 但认为它在“工作”。
简单的场景是这样的;在本教程中:
- Using
podman
withoutsudo
- 更新#1 ...出现的问题与正确激活有关
cgroups2
在 Ubuntu.
到 运行 bash
在 Ubuntu 容器中不需要 root/sudo
权限。命令行是:
podman run --rm --interactive --tty ubuntu bash
此命令带来以下结果:
$ podman run --rm --interactive --tty ubuntu:20.10 bash
Completed short name "ubuntu" with unqualified-search registries (origin: /etc/containers/registries.conf)
Trying to pull docker.io/library/ubuntu:20.10...
Getting image source signatures
Copying blob 79e7e9027772 done
Copying blob eed86eef5a46 done
Copying blob 1b553362680b done
Copying config deb373a625 done
Writing manifest to image destination
Storing signatures
Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs
available in user namespace (requested 0:42 for /etc/gshadow):
Check /etc/subuid and /etc/subgid: lchown /etc/gshadow: invalid argument
Error: Error committing the finished image: error adding layer with
blob "sha256:eed86eef5a4687135cb1ba7c55da6af79c9182e8bf59b53a880d1b334515c8e3":
Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs
available in user namespace (requested 0:42 for /etc/gshadow): Check /etc/subuid
and /etc/subgid: lchown /etc/gshadow: invalid argument
这让我们相信一些进一步的权限是必要的(可能不是 root,但是...)。 运行使用 sudo
使用相同的命令证实了这一点——它工作得非常愉快,除了 popdman Ubuntu
图像是 运行s 作为 root
在我的电脑上。不是我期望的快乐结果。
目前这台机器上的/etc/subuid
和/etc/subgid
文件只有几个samba
用户和一个wireshark
用户的条目,如图:
/etc/subgid /etc/subgid
tsmith:100000:65536 tsmith:100000:65536
demo:165536:65536 demo:165536:65536
smbguest:231072:65536 smbguest:231072:65536
wireshark:296608:65536 wireshark:296608:65536
目前我真的没有任何指导。我意识到我需要对 subuid
-s 和 subgid
-s 做一些事情才能让这个例子起作用。到目前为止,我还没有找到一些关于需要什么的提示或文档。除了不直接编辑文件 -- 很公平。
也在上面提到的教程中,是一个非 sudo
示例,查看 subuid
-s:
$ podman unshare cat /proc/self/uid_map
0 1000 1
1 100000 65536
我问自己,用户 #1 只是一个例子还是我错过了一步?当我在这台电脑上做同样的事情时,我看到的是:
$ podman unshare cat /proc/self/uid_map
0 1000 1
没有用户#1,只有用户#0。我要采取什么行动?现在的问题是:
- 如何让容器中的Ubuntu
bash
shell运行无根?- 最小的变化足以看到
bash
运行 无根。
- 最小的变化足以看到
- 我从哪里开始?
- 我需要做什么?
- 我该怎么做?
请参阅此link,了解如何在 Redhat 上设置无根访问:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/building_running_and_managing_containers/starting-with-containers_building-running-and-managing-containers
我最终 Ubuntu 通过应用本文中的所有步骤来使用无根容器...
这几乎就好像这些点和我以前开始的原始文章中的点一样,所以我真的不能说第一次没有做对哪一点。 post 中的步骤绝对可以完成工作。
确认您的容器是无根的非常重要(恕我直言)。有时您仍然可以 运行 作为 root 但认为它在“工作”。