其他分享
首页 > 其他分享> > podman(无根用户管理podman)

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。

该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。用户可以根据需要修改这些文件。

[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"

授权文件
此文件里面写了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