ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

podman(无根用户管理podman)

2022-08-17 02:01:10  阅读:158  来源: 互联网

标签:lisi 管理 etc 用户 podman conf mr root containers


用户操作在允许没有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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有