podman(无根用户管理podman)
作者:互联网
用户操作在允许没有root特权的用户运行Podman之前,管理员必须安装或构建Podman并完成以下配置cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,如果使用cgroupV2启用了运行Podman的Linux发行版,则可能需要更改默认的OCI运行时。某些较旧的版本runc不适用于cgroupV2,必须切换到备用OCI运行时crun。
[root@mr ~]# yum -y install crun
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:01:52 ago on Tue Aug 16 23:43:05 2022.
Dependencies resolved.
==============================================================================
Package Arch Version Repository Size
==============================================================================
Installing:
crun x86_64 1.4.3-1.module_el8.7.0+1106+45480ee0 appstream 209 k
Installing dependencies:
yajl x86_64 2.1.0-11.el8 appstream 41 k
Transaction Summary
==============================================================================
Install 2 Packages
Total download size: 250 k
Installed size: 602 k
Downloading Packages:
(1/2): yajl-2.1.0-11.el8.x86_64.rpm 264 kB/s | 41 kB 00:00
(2/2): crun-1.4.3-1.module_el8.7.0+1106+45480 810 kB/s | 209 kB 00:00
------------------------------------------------------------------------------
Total 315 kB/s | 250 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : yajl-2.1.0-11.el8.x86_64 1/2
Installing : crun-1.4.3-1.module_el8.7.0+1106+45480ee0.x86_64 2/2
Running scriptlet: crun-1.4.3-1.module_el8.7.0+1106+45480ee0.x86_64 2/2
Verifying : crun-1.4.3-1.module_el8.7.0+1106+45480ee0.x86_64 1/2
Verifying : yajl-2.1.0-11.el8.x86_64 2/2
Installed products updated.
Installed:
crun-1.4.3-1.module_el8.7.0+1106+45480ee0.x86_64 yajl-2.1.0-11.el8.x86_64
Complete!
[root@mr ~]# rpm -qa | grep crun
crun-1.4.3-1.module_el8.7.0+1106+45480ee0.x86_64
[root@mr ~]#
[root@mr ~]# cd /usr/share/
[root@mr share]# cd containers/
[root@mr containers]# vim containers.conf
runtime = "crun"
#runtime = "runc"
[root@mr ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@mr ~]# podman run -d --name web1 -p80:80 httpd
788c39335b9cd8ed7dfc3a1131abcaf0deae44af22487e7be9c6b46be4cc19fc
[root@mr ~]# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
788c39335b9c docker.io/library/httpd:latest httpd-foreground 11 seconds ago Up 12 seconds ago 0.0.0.0:80->80/tcp web1
[root@mr ~]# podman inspect -l | grep crun
"OCIRuntime": "crun",
[root@mr ~]#
安装slirp4netns和fuse-overlayfs在普通用户环境中使用Podman时,建议使用fuse-overlayfs而不是VFS文件系统,至少需要版本0.7.6。现在新版本默认就是了。
[root@mr ~]# rpm -qa | grep slirp4netns
slirp4netns-1.1.8-2.module_el8.7.0+1106+45480ee0.x86_64
[root@mr ~]# rpm -qa | grep fuse-overlayfs
fuse-overlayfs-1.8.2-1.module_el8.7.0+1106+45480ee0.x86_64
[root@mr ~]# cd /etc/containers/
[root@mr containers]# ls
certs.d policy.json registries.conf.d storage.conf
oci registries.conf registries.d
[root@mr containers]# vim storage.conf
mount_program = "/usr/bin/fuse-overlayfs"(取消注释)
[root@mr containers]# which fuse-overlayfs
/usr/bin/fuse-overlayfs
/ etc / subuid和/ etc / subgid配置Podman要求运行它的用户在/ etc / subuid和/ etc / subgid文件中列出一系列UID,shadow-utils或newuid包提供这些文件
[root@mr ~]# useradd tom
[root@mr ~]# cat /etc/subgid
tom:100000:65536
[root@mr ~]# useradd zhangsan
[root@mr ~]# cat /etc/subgid
tom:100000:65536
zhangsan:165536:65536
[root@mr ~]# useradd lisi
[root@mr ~]# cat /etc/subgid
tom:100000:65536
zhangsan:165536:65536
lisi:231072:65536
[root@mr ~]# vim /etc/sysctl.conf
net.ipv4.ping_group_range=0 200000
这个文件的格式是 USERNAME:UID:RANGE中/etc/passwd或输出中列出的用户名getpwent。
- 为用户分配的初始 UID。
- 为用户分配的 UID 范围的大小。
该usermod程序可用于为用户分配 UID 和 GID,而不是直接更新文件。
[root@mr ~]# usermod --del-subuids 231072-296608 --del-subgids 231072-296608 lisi
[root@mr ~]# cat /etc/subgid
tom:100000:65536
zhangsan:165536:65536
[root@mr ~]# usermod --add-subuids 300000-302000 --add-subgids 300000-302000 lisi
[root@mr ~]# cat /etc/subgid
tom:100000:65536
zhangsan:165536:65536
lisi:300000:2001
用户配置文件三个主要的配置文件是container.conf、storage.conf和registries.conf。用户可以根据需要修改这些文件。
- container.conf
[root@mr ~]# find / -name container.conf
/usr/share/containers/containers.conf
如果它们以该顺序存在。每个文件都可以覆盖特定字段的前一个文件。
配置storage.conf文件
[root@mr ~]# find / -name storage.conf
/etc/containers/storage.conf
[root@mr ~]# cd /etc/containers/
[root@mr containers]# ls
certs.d policy.json registries.conf.d storage.conf
oci registries.conf registries.d
[root@mr containers]# vim storage.conf
driver = "overlay" #此处改为overlay
mount_program = "/usr/bin/fuse-overlayfs"#取消注释
[root@mr containers]# cd
[root@mr ~]# vim /etc/sys
sysconfig/ sysctl.d/ system-release
sysctl.conf systemd/ system-release-cpe
[root@mr ~]# vim /etc/sysctl.conf
user.max_user_namespaces=15000
在普通用户中这些字段默认
graphroot="$HOME/.local/share/containers/storage"
runroot="$XDG_RUNTIME_DIR/containers"
- registries.conf
配置按此顺序读入,这些文件不是默认创建的,可以从/usr/share/containers或复制文件/etc/containers并进行修改。
授权文件
此文件里面写了docker账号的密码,以加密方式显示
[root@mr ~]# podman login
Username: marui123
Password:
Login Succeeded!
[root@mr ~]# find / -name auth.json
/run/user/0/containers/auth.json
/tmp/podman-run-1000/containers/auth.json
[root@mr ~]# cat /run/user/0/containers/auth.json
{
"auths": {
"docker io": {
"auth": "bGFuemhpeW9uZzEyMzpsenkxNTA3Mjc4MDY5Nw=="
}
}
}
普通用户是无法看见root用户的镜像的,
容器与root用户一起运行,则root容器中的用户实际上就是主机上的用户。UID GID是在/etc/subuid和/etc/subgid等中用户映射中指定的第一个UID GID。如果普通用户的身份从主机目录挂载到容器中,并在该目录中以根用户身份创建文件,则会看到它实际上是你的用户在主机上拥有的。
[root@mr ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/busybox latest 7a80323521cc 2 weeks ago 1.47 MB
docker.io/library/httpd latest dabbfbe0c57b 7 months ago 148 MB
docker.io/library/registry latest b8604a3fe854 9 months ago 26.8 MB
docker.io/library/centos latest 5d0da3dc9764 11 months ago 239 MB
quay.io/centos/centos latest 300e315adb2f 20 months ago 217 MB
registry.fedoraproject.org/f29/httpd latest 25c76f9dcdb5 3 years ago 482 MB
[root@mr ~]# su - lisi
[lisi@mr ~]$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
[lisi@mr ~]$ podman run -dit --name web1 -p 8080:80 httpd
[lisi@mr ~]$ podman exec -it web1 /bin/bash
/#id
uid=0(root) gid=0(root) groups=0(root)
/#
[lisi@mr ~]$ mkdir mr
[lisi@mr ~]$ ls
mr
[lisi@mr ~]$ podman run -dit --name web1 -v /home/tom/abc/:/abc -p 8080:80 httpd
[lisi@mr ~]$ podman exec -it web1 /bin/bash
/# ls -l / --color
drwxrwxr-x 2 root root 6 Aug 17 01:02 abc
[lisi@mr ~]$ ls
[lisi@mr ~]$ touch 1
[lisi@mr ~]$ ls
1
/# cd /abc/
/abc#ls
1
/abc#touch 2 3 4
/abc# mkdir abc
/abc# ls
1 2 3 4 abc
[lisi@mr ~]$ ls
1 2 3 4 abc
标签:lisi,管理,etc,用户,podman,conf,mr,root,containers 来源: https://www.cnblogs.com/marymary/p/16593540.html