podman用户操作实例

podman用户操作实例

实现root用户与普通用户端口通信
Slirp4netns
Slirp4netns 是无根容器和 Pod 的默认网络设置。它的发明是因为不允许非特权用户在主机上创建网络接口。Slirp4netns 在容器的网络命名空间中创建一个 TAP 设备,并连接到用户模式 TCP/IP 堆栈。

此笔记本电脑上的非特权用户创建了两个容器:数据库容器和 Web 容器。这两个容器都能够访问便携式计算机外部网络上的内容。如果容器绑定到主机端口并且便携式计算机防火墙允许,则外部客户端可以访问容器。请记住,非特权用户必须使用端口 1024 到 65535,因为较低的端口需要 root 权限。(CAP_NET_BIND_SERVICE)注意:这可以使用sysctl net.ipv4.ip_unprivileged_port_start

slirp4netns的缺点之一是容器彼此完全隔离。与网桥方法不同,没有虚拟网络。为了使容器相互通信,它们可以将端口映射与主机系统一起使用,也可以将它们放入Pod中,在那里它们共享相同的网络命名空间。有关详细信息,请参阅容器和 Pod 之间的通信。

在普通用户中创建容器,root用户访问查看网卡时是没有通信网卡的,但是当我们
在普通用户容器中已经创建了一个印射81端口的容器,是否可以通信呢?
例:
下面的示例将演示两个无根容器如何相互通信,其中一个是 Web 服务器。然后,它将显示主机网络上的客户端如何与无根Web服务器进行通信。

[hh@localhost ~]$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS                    PORTS               NAMES
dbf856602146  docker.io/library/httpd:latest  httpd-foreground  27 seconds ago  Exited (0) 5 seconds ago  0.0.0.0:81->80/tcp  web
[hh@localhost ~]$ podman start web
web
[hh@localhost ~]$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS            PORTS               NAMES
dbf856602146  docker.io/library/httpd:latest  httpd-foreground  41 seconds ago  Up 3 seconds ago  0.0.0.0:81->80/tcp  web
[hh@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                 [::]:22               [::]:*              
LISTEN  0       128                    *:81                  *:*   

宿主机查看网卡

[root@localhost ~]# ifconfig 
cni-podman0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether ca:61:ef:f6:fb:e0  txqueuelen 1000  (Ethernet)
        RX packets 58  bytes 3646 (3.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30  bytes 2546 (2.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.47.137  netmask 255.255.255.0  broadcast 192.168.47.255
        inet6 fe80::20c:29ff:fe5a:68d1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:5a:68:d1  txqueuelen 1000  (Ethernet)
        RX packets 269991  bytes 274718386 (261.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 127863  bytes 69067421 (65.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536                           //可见没有看到容器虚拟网卡
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 142  bytes 11272 (11.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 142  bytes 11272 (11.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# 
宿主机查看已存在81
[root@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                 [::]:22               [::]:*              
LISTEN  0       128                    *:81                  *:* 
[root@localhost ~]# curl 192.168.47.137:81
<html><body><h1>It works!</h1></body></html>
防火墙开放81端口
[root@localhost ~]# firewall-cmd --zone=public --add-port=81/tcp --permanent 
success
[root@localhost ~]# firewall-cmd --reload 
success

在到普通用户登录容器,写入网页配置文件
[hh@localhost ~]$ podman exec -it  web /bin/bash
root@dbf856602146:/usr/local/apache2# ls        
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs	modules
root@dbf856602146:/usr/local/apache2# cd htdocs/
root@dbf856602146:/usr/local/apache2/htdocs# ls
index.html
root@dbf856602146:/usr/local/apache2/htdocs# echo "6666" > index.html 
root@dbf856602146:/usr/local/apache2/htdocs# cat index.html 
6666


podman基础命令大全
cp
在容器和本地文件系统之间 复制文件/文件夹

//将本地文件传输到容器中
[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE                           COMMAND           CREATED         STATUS            PORTS       NAMES
9471fdc1f3b6  docker.io/library/httpd:latest  httpd-foreground  23 seconds ago  Up 2 seconds ago              wqe
[root@localhost ~]# ls
anaconda-ks.cfg
[root@localhost ~]# podman cp anaconda-ks.cfg  wqe:/tmp/
[root@localhost ~]# podman exxec -it wqe /bin/bash
Error: 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值