ICode9

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

podman无根模式

2022-08-16 19:33:32  阅读:127  来源: 互联网

标签:conf etc 0.0 模式 podman zz 无根 root localhost



目录

podman无根模式

在允许没有root特权的用户运行Podman之前,管理员必须安装或构建Podman并完成以下配置

cgroup V2Linux内核功能允许用户限制普通用户容器可以使用的资源,如果使用cgroupV2启用了运行Podman的Linux发行版,则可能需要更改默认的OCI运行时。某些较旧的版本runc不适用于cgroupV2,必须切换到备用OCI运行时crun

[root@localhost ~]# yum -y install crun     //centos8系统自带
[root@localhost ~]# vim /usr/share/containers/containers.conf 
runtime = "crun"      
#runtime = "runc"
[root@localhost ~]# podman run -d --name web -p 8088:80 httpd
c38887b81d73e7b4ae511c68ddee01fc753d8b902380c4bb8da9dfcf1457fa76
[root@localhost ~]# 
[root@localhost ~]# podman ps 
CONTAINER ID  IMAGE                           COMMAND           CREATED        STATUS            PORTS                 NAMES
c38887b81d73  docker.io/library/httpd:latest  httpd-foreground  5 seconds ago  Up 5 seconds ago  0.0.0.0:8088->80/tcp  web
[root@localhost ~]# podman inspect web |grep crun
        "OCIRuntime": "crun",
            "crun",

在普通用户环境中使用Podman时,建议使用fuse-overlayfs而不是VFS文件系统,至少需要版本0.7.6。现在新版本默认就是了。

[root@localhost ~]# vi /etc/containers/storage.conf 
mount_program = "/usr/bin/fuse-overlayfs"   //取消注释

/etc/subuid和/etc/subgid配置
Podman要求运行它的用户在/ etc / subuid和/ etc / subgid文件中列出一系列UID,shadow-utils或newuid包提供这些文件

[root@localhost ~]# useradd zz
[root@localhost ~]# cat /etc/subuid
zz:100000:65536
[root@localhost ~]# cat /etc/subgid
zz:100000:65536

// 启动非特权ping 
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ping_group_range=0 300000

这个文件的格式是 USERNAME:UID:RANGE中/etc/passwd或输出中列出的用户名getpwent。

  • 为用户分配的初始 UID。
  • 为用户分配的 UID 范围的大小。
    该usermod程序可用于为用户分配 UID 和 GID,而不是直接更新文件
[root@localhost ~]# useradd hh
[root@localhost ~]# cat /etc/subuid
zz:100000:65536
hh:165536:65536
[root@localhost ~]# usermod --del-subuids 165536-231072 --del-subgids 165536-231072 hh 
[root@localhost ~]# cat /etc/subuid
zz:100000:65536
[root@localhost ~]# usermod --add-subuids 200000-201000 --add-subgids 200000-201000 hh
[root@localhost ~]# cat /etc/subuid
zz:100000:65536
hh:200000:1001

用户配置文件

三个主要的配置文件是container.conf、storage.conf和registries.conf。用户可以根据需要修改这些文件。
container.conf

[root@localhost ~]# cat /usr/share/containers/containers.conf
[root@localhost ~]# cat /etc/containers/containers.conf
[root@localhost ~]# cat ~/.config/containers/containers.conf  //优先级最高

storage.conf

1./etc/containers/storage.conf
2.$HOME/.config/containers/storage.conf

registries.conf

1./etc/containers/registries.conf
2./etc/containers/registries.d/*
3.HOME/.config/containers/registries.conf

普通用户和root用户是看不到对方的镜像的

//root用户
[root@localhost ~]# podman images
REPOSITORY                            TAG         IMAGE ID      CREATED       SIZE
docker.io/library/httpd               latest      f2a976f932ec  2 weeks ago   149 MB
docker.io/library/busybox             latest      7a80323521cc  2 weeks ago   1.47 MB
localhost/zzking1/busybox             v0.1        7a80323521cc  2 weeks ago   1.47 MB
docker.io/library/alpine              latest      c059bfaa849c  8 months ago  5.87 MB
192.168.26.132/apline                 v0.1        c059bfaa849c  8 months ago  5.87 MB
registry.fedoraproject.org/f29/httpd  latest      25c76f9dcdb5  3 years ago   482 MB
//普通用户
[root@localhost ~]# su - zz
[zz@localhost ~]$ podman images
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE

  • 容器与root用户一起运行,则root容器中的用户实际上就是主机上的用户。
  • UID GID是在/etc/subuid和/etc/subgid等中用户映射中指定的第一个UID GID。
  • 如果普通用户的身份从主机目录挂载到容器中,并在该目录中以根用户身份创建文件,则会看到它实际上是你的用户在主机上拥有的

使用卷

[root@localhost ~]# su - zz
Last login: Tue Aug 16 18:18:28 CST 2022 on pts/0
[zz@localhost ~]$ pwd
/home/zz
[zz@localhost ~]$ mkdir /home/zz/data
[zz@localhost ~]$ podman run -it --name z1 -v /home/zz/data/:/data:Z busybox /bin/sh
/ # ls
bin   data  dev   etc   home  proc  root  run   sys   tmp   usr   var
/ # cd data/
/data # ls
/data # touch 123
/data # ls -l
total 0
-rw-r--r--    1 root     root             0 Aug 16 10:25 123

在主机上查看

[zz@localhost ~]$ ll data/
total 0
-rw-r--r--. 1 zz zz 0 Aug 16 18:25 123
[zz@localhost ~]$ echo "hell world" >> 123
[zz@localhost ~]$ cat 123 
hell world

容器里查看

/data # cat 123 
hell world
//我们可以发现在容器里面的文件的属主和属组都属于root,那么如何才能让其属于tom用户呢?下面告诉你答案
/data # ls -l
total 4
-rw-rw-r--    1 root     root            11 Aug 16 10:37 123
//只要在运行容器的时候加上一个--userns=keep-id即可
[zz@localhost ~]$ podman run -it --name z1 -v /home/zz/data/:/data:Z  --userns=keep-id busybox /bin/sh
~ $ cd data/
/data $ ls -l
total 4
-rw-rw-r--    1 zz       zz              11 Aug 16 10:37 123

使用普通用户映射容器端口时会报“ permission denied”的错误

[zz@localhost ~]$ podman run -d -p 80:80 httpd
Error: rootlessport cannot expose privileged port 80, you can add 'net.ipv4.ip_unprivileged_port_start=80' to /etc/sysctl.conf (currently 1024), or choose a larger port number (>= 1024): listen tcp 0.0.0.0:80: bind: permission denied

配置echo ‘net.ipv4.ip_unprivileged_port_start=80’ >> /etc/sysctl.conf后可以映射大于等于80的端口

[root@localhost ~]# vim /etc/sysctl.conf 
net.ipv4.ip_unprivileged_port_start=80
[root@localhost ~]# sysctl -p
net.ipv4.ping_group_range = 0 300000
net.ipv4.ip_unprivileged_port_start = 80
[zz@localhost ~]$ podman run -d -p 80:80 httpd
60fbbe2db63ce8c23f5d779ed3aadc69ad8184d7c21cd2621f0c22a33fffb6dc
[zz@localhost ~]$ ss -anlt
State   Recv-Q  Send-Q    Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128             0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128             0.0.0.0:8088          0.0.0.0:*              
LISTEN  0       128                   *:80                  *:*              
LISTEN  0       128                [::]:22               [::]:*  

普通用户可以映射>= 1024的端口

[zz@localhost ~]$ podman run -d -p 1024:80 httpd
d5a67001083d481e1f2dafc9bb367f1f0d6482795ce4a6ef2b6ee1e0f9ecaa20
[zz@localhost ~]$ ss -antl
State   Recv-Q  Send-Q    Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128             0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128             0.0.0.0:8088          0.0.0.0:*              
LISTEN  0       128                   *:80                  *:*              
LISTEN  0       128                [::]:22               [::]:*              
LISTEN  0       128                   *:1024                *:*   

标签:conf,etc,0.0,模式,podman,zz,无根,root,localhost
来源: https://www.cnblogs.com/z696/p/16592677.html

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

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

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

ICode9版权所有