podman网络、常用命令、以及容器的开机自启

2023-05-16

目录

  • 1. podman网络
    • 1.1 rootfull和rootless容器网络之间的差异
    • 1.2 防火墙
    • 1.3 容器间通信示例:
    • 1.4 查看防火墙规则
  • 2. podman常用命令
  • 3. 容器的开机自启
    • 3.1 root用户
    • 3.2 普通用户

1. podman网络

1.1 rootfull和rootless容器网络之间的差异

podman容器联网的指导因素之一将是容器是否由root用户运行。这是因为非特权用户无法在主机上创建网络接口。因此,对于rootfull容器,默认网络模式是使用容器网络接口(CNI)插件,特别是桥接插件。对于rootless,默认的网络模式是slir4netns。由于权限有限,slirnetns缺少CNI组网的一些功能;例如,slirp4netns无法为容器提供可路由的IP地址。cni是容器网络接口

1.2 防火墙

防火墙的作用不会影响网络的设置和配置,但会影响这些网络上的流量。最明显的是容器主机的入站网络流量,这些流量通常通过端口映射传递到容器上。根据防火墙的实现,我们观察到防火墙端口由于运行带有端口映射的容器(例如)而自动打开。如果容器流量似乎无法正常工作,请检查防火墙并允许容器正在使用的端口号上的流量。一个常见的问题是重新加载防火墙会删除cni iptables规则,从而导致rootful容器的网络连接丢失。podman v3提供了podman network reload命令来恢复它而无需重新启动容器。
基本网络设置
大多数使用 Podman 运行的容器和 Pod 都遵循几个简单的场景。默认情况下,rootfull Podman 将创建一个桥接网络。这是 Podman 最直接和首选的网络设置。桥接网络在内部桥接网络上为容器创建一个接口,然后通过网络地址转换(NAT)连接到互联网。我们还看到用户也希望macvlan 用于联网。这macvlan插件将整个网络接口从主机转发到容器中,允许它访问主机所连接的网络。最后,无根容器的默认网络配置是 slirp4netns。slirp4netns 网络模式功能有限,但可以在没有 root 权限的用户上运行。它创建了一个从主机到容器的隧道来转发流量。

1.3 容器间通信示例:

//启动一个test容器
[root@localhost ~]# podman run -it --name test docker.io/library/busybox:latest /bin/sh
Trying to pull docker.io/library/busybox:latest...
Getting image source signatures
Copying blob 3cb635b06aa2 done  
Copying config ffe9d497c3 done  
Writing manifest to image destination
Storing signatures
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether ca:92:b7:65:48:f5 brd ff:ff:ff:ff:ff:ff
    inet 10.88.0.2/16 brd 10.88.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::c892:b7ff:fe65:48f5/64 scope link 
       valid_lft forever preferred_lft forever
/ # 

//启动一个test1容器
[root@localhost ~]# podman run -it --name test1 docker.io/library/busybox:latest /bin/sh
/ # ping -c2 10.88.0.2
PING 10.88.0.2 (10.88.0.2): 56 data bytes
64 bytes from 10.88.0.2: seq=0 ttl=64 time=0.060 ms
64 bytes from 10.88.0.2: seq=1 ttl=64 time=0.043 ms

--- 10.88.0.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.043/0.051/0.060 ms
/ # 

//每当启动一个容器就会在宿主机上启动一个veth类型的网卡,当容器停止运行就会关闭
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:83:47:c1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.8.120/24 brd 192.168.8.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe83:47c1/64 scope link 
       valid_lft forever preferred_lft forever
3: cni-podman0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether c2:67:e8:f8:57:cc brd ff:ff:ff:ff:ff:ff
    inet 10.88.0.1/16 brd 10.88.255.255 scope global cni-podman0
       valid_lft forever preferred_lft forever
    inet6 fe80::c067:e8ff:fef8:57cc/64 scope link 
       valid_lft forever preferred_lft forever
4: vethdd05fdfb@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cni-podman0 state UP group default 
    link/ether 76:62:fa:93:7c:74 brd ff:ff:ff:ff:ff:ff link-netns cni-670fb712-6556-79c2-1e72-373183ec0e09
    inet6 fe80::7462:faff:fe93:7c74/64 scope link 
       valid_lft forever preferred_lft forever
5: vetha6c5d015@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cni-podman0 state UP group default 
    link/ether 9a:18:07:37:98:72 brd ff:ff:ff:ff:ff:ff link-netns cni-d382232a-92ec-813c-eeca-b1e3a8ced5e9
    inet6 fe80::9818:7ff:fe37:9872/64 scope link 
       valid_lft forever preferred_lft forever
[root@localhost ~]# 

1.4 查看防火墙规则

[root@localhost ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@localhost ~]# 

//运行一个容器进行测试,当运行一个容器之后就会自动给容器添加一个规则,并放行其端口号
[root@localhost ~]# podman run -d -p 80:80 --name web --rm docker.io/library/httpd
Trying to pull docker.io/library/httpd:latest...
Getting image source signatures
Copying blob 94c13707a187 done  
Copying blob e5ae68f74026 done  
Copying blob bc36ee1127ec done  
Copying blob 0e5b7b813c8c done  
Copying blob a343142ddd8a done  
Copying config 8362f26158 done  
Writing manifest to image destination
Storing signatures
a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723
[root@localhost ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-DNAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-MASQ  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* CNI portfwd requiring masquerade */
    0     0 CNI-cfb28a04db7056bb23430c39  all  --  *      *       10.88.0.4            0.0.0.0/0            /* name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-DNAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain CNI-cfb28a04db7056bb23430c39 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            10.88.0.0/16         /* name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */
    0     0 MASQUERADE  all  --  *      *       0.0.0.0/0           !224.0.0.0/4          /* name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */

Chain CNI-HOSTPORT-SETMARK (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* CNI portfwd masquerade mark */ MARK or 0x2000

Chain CNI-HOSTPORT-MASQ (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x2000/0x2000

Chain CNI-HOSTPORT-DNAT (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-DN-cfb28a04db7056bb23430  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* dnat name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */ multiport dports 80

Chain CNI-DN-cfb28a04db7056bb23430 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-SETMARK  tcp  --  *      *       10.88.0.0/16         0.0.0.0/0            tcp dpt:80
    0     0 CNI-HOSTPORT-SETMARK  tcp  --  *      *       127.0.0.1            0.0.0.0/0            tcp dpt:80
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:10.88.0.4:80
[root@localhost ~]# podman inspect -l | grep -i address
            "IPAddress": "10.88.0.4",
            "GlobalIPv6Address": "",
            "MacAddress": "a2:3d:36:17:02:05",
            "LinkLocalIPv6Address": "",
                    "IPAddress": "10.88.0.4",
                    "GlobalIPv6Address": "",
                    "MacAddress": "a2:3d:36:17:02:05",
[root@localhost ~]# 

//访问测试
[root@localhost ~]# curl 10.88.0.4
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# 

//使用重启容器恢复防火墙规则
[root@localhost ~]# iptables -t nat -F  //清空防火墙规则
[root@localhost ~]# iptables -t nat -nvL   //已经没有80端口
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain CNI-cfb28a04db7056bb23430c39 (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain CNI-HOSTPORT-SETMARK (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain CNI-HOSTPORT-MASQ (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain CNI-HOSTPORT-DNAT (0 references)
 pkts bytes target     prot opt in     out     source               destination         

Chain CNI-DN-cfb28a04db7056bb23430 (0 references)
 pkts bytes target     prot opt in     out     source               destination         
[root@localhost ~]# 

//重启容器
[root@localhost ~]# podman restart -l
a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723
[root@localhost ~]# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-DNAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-MASQ  all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* CNI portfwd requiring masquerade */
    0     0 CNI-cfb28a04db7056bb23430c39  all  --  *      *       10.88.0.5            0.0.0.0/0            /* name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-DNAT  all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL

Chain CNI-HOSTPORT-SETMARK (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            /* CNI portfwd masquerade mark */ MARK or 0x2000

Chain CNI-HOSTPORT-MASQ (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      *       0.0.0.0/0            0.0.0.0/0            mark match 0x2000/0x2000

Chain CNI-HOSTPORT-DNAT (2 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-DN-cfb28a04db7056bb23430  tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            /* dnat name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */ multiport dports 80

Chain CNI-cfb28a04db7056bb23430c39 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            10.88.0.0/16         /* name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */
    0     0 MASQUERADE  all  --  *      *       0.0.0.0/0           !224.0.0.0/4          /* name: "podman" id: "a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723" */

Chain CNI-DN-cfb28a04db7056bb23430 (1 references)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 CNI-HOSTPORT-SETMARK  tcp  --  *      *       10.88.0.0/16         0.0.0.0/0            tcp dpt:80
    0     0 CNI-HOSTPORT-SETMARK  tcp  --  *      *       127.0.0.1            0.0.0.0/0            tcp dpt:80
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:10.88.0.5:80
[root@localhost ~]# 

在这里插入图片描述

2. podman常用命令

podman官网:https://docs.podman.io/en/latest/markdown/podman.1.html

常用命令作用
podman attach附加到正在运行的容器。
podman auto update根据其自动更新策略自动更新容器
podman build使用 Containerfile 构建容器映像。
podman commit根据更改的容器创建新图像。
podman completion生成 shell 完成脚本
podman container管理容器。
podman cp在容器和本地文件系统之间复制文件/文件夹。
podman create创建一个新容器。
podman diff检查容器或映像文件系统上的更改。
podman events监控 Podman 事件
podman exec在正在运行的容器中执行命令。
podman export将容器的文件系统内容导出为 tar 存档。
podman generate基于容器、Pod 或卷生成结构化数据。
podman healthcheck管理容器的健康检查
podman history显示镜像的历史记录。
podman image管理镜像。
podman images列出本地存储中的镜像。
podman import导入 tarball 并将其另存为文件系统映像。
podman info显示 Podman 相关的系统信息.
podman init初始化一个或多个容器
podman inspect显示容器、镜像、卷、网络或 pod 的配置。
podman kill杀死一个或多个容器中的主进程。
podman load将 tar 存档中的图像加载到容器存储中。
podman login登录到容器注册表。
podman logout注销容器注册表。
podman logs显示一个或多个容器的日志。
podman machine管理 Podman 的虚拟机
podman manifest创建和操作清单列表和图像索引。
podman mount挂载一个工作容器的根文件系统。
podman network管理 Podman CNI 网络。
podman pause暂停一个或多个容器。
podman play根据结构化输入文件播放容器、Pod 或卷。
podman pod容器组的管理工具,称为 pod。
podman port列出容器的端口映射。
podman ps从注册表中拉取镜像。
podman push将镜像、清单列表或镜像索引从本地存储推送到其他地方。
podman rename重命名现有容器。
podman restart重启一个或多个容器。
podman rm移除一个或多个容器。
podman rmi删除一个或多个本地存储的镜像。
podman run在新容器中运行命令。
podman save将镜像保存到存档。
podman search在注册表中搜索图像。
podman secret管理 podman 机密。
podman start启动一个或多个容器。
podman stats显示一个或多个容器的资源使用统计的实时流。
podman stop停止一个或多个正在运行的容器。
podman system管理 podman。
podman tag向本地镜像添加附加名称。
podman top显示容器的运行进程。
podman unmount卸载工作容器的根文件系统。
podman unpause取消暂停一个或多个容器。
podman unshare在修改后的用户命名空间内运行命令。
podman untag从本地存储的图像中删除一个或多个名称。
podman version显示 Podman 版本信息。
podman volume简单的卷管理工具。
podman wait等待一个或多个容器停止并打印其退出代码。

常用命令示例:

//拉取一个nginx镜像
[root@localhost ~]# podman pull docker.io/library/nginx:latest
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob e5ae68f74026 skipped: already exists  
Copying blob 21e0df283cd6 done  
Copying blob 77700c52c969 done  
Copying blob ed835de16acd done  
Copying blob 881ff011f1c9 done  
Copying blob 44be98c0fab6 done  
Copying config f652ca386e done  
Writing manifest to image destination
Storing signatures
f652ca386ed135a4cbe356333e08ef0816f81b2ac8d0619af01e2b256837ed3e

//查看镜像
[root@localhost ~]# podman images
REPOSITORY                 TAG         IMAGE ID      CREATED       SIZE
docker.io/library/httpd    latest      8362f2615893  10 hours ago  148 MB
docker.io/library/busybox  latest      ffe9d497c324  7 days ago    1.46 MB
docker.io/library/nginx    latest      f652ca386ed1  12 days ago   146 MB

//运行一个容器
[root@localhost ~]# podman run -itd --name web01 nginx:latest
dc55487665dee3c036fdcaf98996eec9808fda1666784c6103fe11ef17250eec

//查看容器
[root@localhost ~]# podman ps 
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS            PORTS               NAMES
a720319928f7  docker.io/library/httpd:latest  httpd-foreground      16 minutes ago  Up 9 minutes ago  0.0.0.0:80->80/tcp  web
dc55487665de  docker.io/library/nginx:latest  nginx -g daemon o...  8 seconds ago   Up 8 seconds ago                      web01
[root@localhost ~]# 

//进入一个容器
[root@localhost ~]# podman exec -it web01 /bin/bash
root@dc55487665de:/# exit
exit
[root@localhost ~]# 

//"写在容器运行时要执行的命令" 容器id + 将容器重新命名,最好命名为你docker仓库的名字  
// -p是暂停容器
[root@localhost ~]# podman commit -p  -c 

//要传的文件或目录写绝对路径 容器的id或名字:要传到容器的那个目录里面去
[root@localhost ~]# podman cp 

//查看镜像的历史信息
[root@localhost ~]# podman history nginx:latest
ID            CREATED      CREATED BY                                     SIZE        COMMENT
f652ca386ed1  12 days ago  /bin/sh -c #(nop)  CMD ["nginx" "-g" "daem...  0 B         
<missing>     12 days ago  /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT          0 B         
<missing>     12 days ago  /bin/sh -c #(nop)  EXPOSE 80                   0 B         
<missing>     12 days ago  /bin/sh -c #(nop)  ENTRYPOINT ["/docker-en...  0 B         
<missing>     12 days ago  /bin/sh -c #(nop) COPY file:09a214a3e07c91...  7.17 kB     
<missing>     12 days ago  /bin/sh -c #(nop) COPY file:0fd5fca330dcd6...  3.58 kB     
<missing>     12 days ago  /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5...  4.1 kB      
<missing>     12 days ago  /bin/sh -c #(nop) COPY file:65504f71f5855c...  3.07 kB     
<missing>     12 days ago  /bin/sh -c set -x     && addgroup --system...  62 MB       
<missing>     12 days ago  /bin/sh -c #(nop)  ENV PKG_RELEASE=1~bullseye  0 B         
<missing>     12 days ago  /bin/sh -c #(nop)  ENV NJS_VERSION=0.7.0       0 B         
<missing>     12 days ago  /bin/sh -c #(nop)  ENV NGINX_VERSION=1.21.4    0 B         
<missing>     12 days ago  /bin/sh -c #(nop)  LABEL maintainer=NGINX ...  0 B         
<missing>     13 days ago  /bin/sh -c #(nop)  CMD ["bash"]                0 B         
<missing>     13 days ago  /bin/sh -c #(nop) ADD file:ece5ff85ca549f0...  83.9 MB     
[root@localhost ~]# 

//删除容器 -f强制删除
[root@localhost ~]# podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS             PORTS               NAMES
a720319928f7  docker.io/library/httpd:latest  httpd-foreground      20 minutes ago  Up 13 minutes ago  0.0.0.0:80->80/tcp  web
dc55487665de  docker.io/library/nginx:latest  nginx -g daemon o...  3 minutes ago   Up 3 minutes ago                       web01
[root@localhost ~]# podman rm -f web web01 
dc55487665dee3c036fdcaf98996eec9808fda1666784c6103fe11ef17250eec
a720319928f7c47f5dda9200fa936a6966501f3ec1870cdc32d6ff84396bc723
[root@localhost ~]# docker ps -a
-bash: docker: 未找到命令
[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE                             COMMAND     CREATED         STATUS                       PORTS       NAMES
694bdbece78d  docker.io/library/busybox:latest  /bin/sh     28 minutes ago  Exited (0) 23 minutes ago                test
8f6be5b77189  docker.io/library/busybox:latest  /bin/sh     27 minutes ago  Exited (127) 23 minutes ago              test1
[root@localhost ~]# podman rm -f test test1
694bdbece78d0686164f18a37e8183a470434052950365f0f10ae7f91c29e739
8f6be5b77189be990cc1ca9e0b171fed482eaf5e1da529a16a23d1a24771ff8c
[root@localhost ~]# podman ps -a
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES
[root@localhost ~]# 

//删除镜像
[root@localhost ~]# podman images -aq
8362f2615893
ffe9d497c324
f652ca386ed1
[root@localhost ~]# podman rmi $(podman images -aq)
Untagged: docker.io/library/httpd:latest
Untagged: docker.io/library/busybox:latest
Untagged: docker.io/library/nginx:latest
Deleted: 8362f2615893c70073d4b6576c884eade7f6ce81482780ac989d535b621750f9
Deleted: ffe9d497c32414b1c5cdad8178a85602ee72453082da2463f1dede592ac7d5af
Deleted: f652ca386ed135a4cbe356333e08ef0816f81b2ac8d0619af01e2b256837ed3e
[root@localhost ~]# podman images
REPOSITORY  TAG         IMAGE ID    CREATED     SIZE
[root@localhost ~]# 

3. 容器的开机自启

3.1 root用户

//创建一个nginx容器
[root@localhost ~]# podman create --name nginx nginx
dfa08c036fc1ca6c8a20ec69edf76c00f11c9b00d1304876d2ffa1e2eb5c299f

//生成开机自启文件
[root@localhost ~]# podman generate systemd --files --name nginx
/root/container-nginx.service
[root@localhost ~]# mv container-nginx.service  /usr/lib/systemd/system/
mv:是否覆盖'/usr/lib/systemd/system/container-nginx.service'yes
[root@localhost ~]# systemctl enable --now container-nginx
Created symlink /etc/systemd/system/multi-user.target.wants/container-nginx.service → /usr/lib/systemd/system/container-nginx.service.
Created symlink /etc/systemd/system/default.target.wants/container-nginx.service → /usr/lib/systemd/system/container-nginx.service.
[root@localhost ~]# systemctl status container-nginx
● container-nginx.service - Podman container-nginx.service
   Loaded: loaded (/usr/lib/systemd/system/container-nginx.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-12-16 09:18:43 CST; 7s ago
     Docs: man:podman-generate-systemd(1)
  Process: 7792 ExecStart=/usr/bin/podman start nginx (code=exited, status=0/SUCCESS)
 Main PID: 7885 (conmon)
    Tasks: 3 (limit: 23485)
   Memory: 6.1M
   CGroup: /system.slice/container-nginx.service
           ├─7826 /usr/bin/fuse-overlayfs -o metacopy=on,lowerdir=/var/lib/containers/storage/overlay/l/UE>
           └─7885 /usr/bin/conmon --api-version 1 -c dfa08c036fc1ca6c8a20ec69edf76c00f11c9b00d1304876d2ffa>

1216 09:18:43 localhost.localdomain systemd[1]: Starting Podman container-nginx.service...
1216 09:18:43 localhost.localdomain podman[7792]: nginx
1216 09:18:43 localhost.localdomain systemd[1]: Started Podman container-nginx.service.


3.2 普通用户

[root@localhost ~]# yum -y install crun
[root@localhost ~]# vim /usr/share/containers/containers.conf
[root@localhost ~]# sed -n '433,434p' /usr/share/containers/containers.conf
runtime = "crun"   取消#
#runtime = "runc"  注释掉
[root@localhost ~]# vim /etc/containers/storage.conf
[root@localhost ~]# sed -n '77p' /etc/containers/storage.conf
mount_program = "/usr/bin/fuse-overlayfs"   #取消注释

//创建用户
[root@localhost ~]# useradd iu
[root@localhost ~]# echo "1"|passwd --stdin iu
更改用户 iu 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# ssh iu@192.168.8.120
iu@192.168.8.120's password: 1

//必须在家目录下创建此目录。不能跟改名字
[iu@localhost ~]$ mkdir -p ~/.config/systemd/user
[iu@localhost ~]$ cd ~/.config/systemd/user

//创建一个容器
[iu@localhost user]$ podman run -d --name test nginx
✔ docker.io/library/nginx:latest
Trying to pull docker.io/library/nginx:latest...
Getting image source signatures
Copying blob 881ff011f1c9 done  
Copying blob ed835de16acd done  
Copying blob 21e0df283cd6 done  
Copying blob e5ae68f74026 done  
Copying blob 44be98c0fab6 done  
Copying blob 77700c52c969 done  
Copying config f652ca386e done  
Writing manifest to image destination
Storing signatures
2d97bbed668d48df206957fcbd64dca89a722b58211476305941c69ffdf3b2c0
[iu@localhost user]$ podman generate systemd --name test --files --new
/home/iu/.config/systemd/user/container-test.service

//停止容器
[iu@localhost user]$ podman stop test
test
[iu@localhost user]$ podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

//如果不是ssh登陆或重新进入linux系统的需重新加载系统服务
[iu@localhost user]$ systemctl --user daemon-reload
[iu@localhost user]$ systemctl --user enable --now container-test.service 
Created symlink /home/iu/.config/systemd/user/multi-user.target.wants/container-test.service → /home/iu/.config/systemd/user/container-test.service.
Created symlink /home/iu/.config/systemd/user/default.target.wants/container-test.service → /home/iu/.config/systemd/user/container-test.service.
[iu@localhost user]$ podman ps
CONTAINER ID  IMAGE                           COMMAND               CREATED        STATUS             PORTS       NAMES
2d8b2a5d59fd  docker.io/library/nginx:latest  nginx -g daemon o...  9 seconds ago  Up 10 seconds ago              test
[iu@localhost user]$ systemctl --user status container-test.service 
● container-test.service - Podman container-test.service
   Loaded: loaded (/home/iu/.config/systemd/user/container-test.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-12-16 09:06:56 CST; 26s ago
     Docs: man:podman-generate-systemd(1)
  Process: 6961 ExecStartPre=/bin/rm -f /run/user/1001/container-test.service.ctr-id (code=exited, status=>
 Main PID: 7006 (conmon)
   CGroup: /user.slice/user-1001.slice/user@1001.service/container-test.service
           ├─7001 /usr/bin/fuse-overlayfs -o ,lowerdir=/home/iu/.local/share/containers/storage/overlay/l/>
           ├─7003 /usr/bin/slirp4netns --disable-host-loopback --mtu=65520 --enable-sandbox --enable-secco>
           ├─7006 /usr/bin/conmon --api-version 1 -c 2d8b2a5d59fdf1f5bee2b31550ae27bfa414a793a5b96d39a13f3>
           ├─7009 nginx: master process nginx -g daemon off;
           ├─7035 nginx: worker process
           ├─7036 nginx: worker process
           ├─7037 nginx: worker process
           └─7038 nginx: worker process

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

podman网络、常用命令、以及容器的开机自启 的相关文章

  • 2022 12 3

    将遭遇的苦难试做上天所给予的理所当然 xff0c 当撑不下去后 xff0c 就用肉泥与血液筑就保护幸福和快乐的围墙 xff0c 人的一生便如此草草地收尾了
  • 国考申论近日书写注意点总结

    一定要审题审清楚 xff0c 它叫你概括问题就主要重心放在问题上 提前做好要点的主题词书写 xff0c 确保后续主题词的书写不会太过垃圾 一定要根据提前安排的行数进行书写 xff0c 不能因为字数的充裕就进行肆意的书写
  • 公共服务设施

    学校 xff1a 小学 xff0c 中学 xff0c 大学 xff0c 中等专业技术学校 xff0c 职业培训机构 xff0c 寄宿制高中和特殊学校 xff0c 幼 xff08 托 xff09 儿园等 医院 xff1a 综合医院 xff0c
  • 倡议书书写细节

    一般来说倡议书所给的材料是一些榜样事迹 xff0c 然后叫你去写相关的倡议书 xff0c 可能是学习榜样精神 或者是榜样行为 xff0c 但是一般来说就是从精神层面或者行为层面进行相关的倡议 当日也可以精神 行为同步倡议 这个时候倡议书的开
  • 倡议书题目所遇困难记录

    充实学习生活明确人生方向 该篇倡议书的主要书写困难在 xff1a 长期以来我训练的相关材料都是与乡村振兴 基层治理以及产业发展相关 xff0c 与榜样事迹精神提炼是相去甚远 xff0c 所以在这方面的训练就比较少 xff0c 所以相关的提炼
  • 文化共享惠民生短评

    文化共享惠民生 今日故宫博物院养心殿多件文物移驾至首都博物馆 xff0c 以亲民 开放姿态融入大众生活 但是 xff0c 各地文物资源闲置情况普遍存在 对此 xff0c 让文物走出封闭确有必要 而梁祝遗存与各地美术馆在该方面工作开展十分值得
  • 自然场景文本检测识别 - 综述

    自然场景文本检测识别 综述 Part II 坚果粥 xff1a 自然场景文本检测识别 综述 Part I26 赞同 1 评论文章 拥有这些背景知识后 xff0c 我们可以开始学习自然场景文本检测识别 xff08 STR xff09 的算法模
  • 议论文写作结构

  • 议论文书写总结

    观点如何引入以及背后原理 议论文的书写有一个常用的书写模板 xff0c 也就是五分三式 有人说这种模板的得分不高 xff0c 也有人只要核心内容切实 不空范 xff0c 论证严谨就也是可以的 那么议论文该如何才能写好 以下仅为随笔 xff0
  • 议论文开头的引出原理

    相信大家都写过议论文 xff0c 议论文开头如果用大家普遍的描述去形容 xff0c 便是用温和的方式将观点进行引出 xff0c 但是此句话太过浅薄 xff0c 难以深入实质 原理 议论文的开头从本质上来说 xff0c 是大脑在看到题干所给的
  • 面试总结1

    总结 xff1a 面试不是以模板为驱动 xff0c 是以题目为驱动 与申论书写类似 xff0c 以模板为驱动 xff0c 只会削足适履 xff0c 让自己没有办法较好地发挥出来 xff0c 流畅性以及自身的创新性都没有办法较好地得到体现 以
  • 模式识别 一

    模式识别 教材选择模式识别基本概念模式识别的主要方法应用领域模式识别与机器学习的区别模式识别典型过程前修基础课程课后问题解答1 简述特征空间优化的方法2 简述分类器的设计准则3 简述分类器设计的基本方法4 简述在什么情况下分类器不可分5 分
  • Docker 持久化存储 Bind mounts

    Docker 持久化存储 Bind mounts Bind mounts 的 v 与 mount 区别启动容器基于bind mount挂载到容器中的非空目录只读 bind mountcompose 中使用 bind mount 官方文档 x
  • BGP路由技术详解(一)

    BGP路由技术详解 xff08 一 xff09 前言一 BGP路由协议概述1 BGP定义2 BGP的特点3 BGP分类4 BGP的路径矢量特征5 BGP的路由器6 BGP Peer 二 自治系统AS的概念1 定义2 AS号3 传输AS中的路
  • 计算机网络知识点(三) 数据链路层

    目录 第三章 数据链路层 3 1 数据链路层的设计问题 3 1 1 提供给网络层的服务 3 1 2 成帧 3 1 3 差错控制 3 1 4 流量控制 3 2 差错检测和纠正 3 2 1 纠错码 3 2 2 检错码 3 3 基本数据链路层协议
  • IP地址划分子网

    前言 记录的内容仅是本人在学习IP的路上的一些心得体会 IP组成 网络号 43 主机号 其实说到底就是一连串的二进制 地址分类 A类 xff1a 10 0 0 0 xff5e 10 255 255 255 B类 xff1a 172 16 0
  • 电脑网络(校园网/热点)持续连不上,连上后自动断联

    ipconfig flushdns xff1a 无效重启解决 xff1a
  • 工厂模式

    1 工厂方法 针对一个产品一个工厂 span class token keyword interface span span class token class name Moveable span span class token pun
  • 使用VSCode快速提交Gitee

    使用VSCode提交Gitee 前言下载GitGitee创建仓库使用VSCode克隆仓库到本地源代码管理界面说明保存账号密码 xff0c 不用每次提交输入 前言 每次用GitHub都要FQ xff0c 所以改用Gitee 下载Git Git
  • 配置webpack-dev-server自动化

    1 注意版本 xff0c 可能会有冲突 个人建议使用以下版本 xff0c 本人没有出现冲突 34 webpack 34 34 5 42 1 34 34 webpack cli 34 34 4 9 2 34 34 webpack dev se

随机推荐

  • Docker容器时间和服务器时间相差8小时

    项目场景 xff1a 在微服务部署时使用docker作为容器 xff0c 部署在服务器上时间不一致 问题描述 在服务器上使用docker进行项目部署时 xff0c docker容器时间和服务器时间相差8小时 xff0c 导致插入数据库时间不
  • anaconda中使用pip无法安装库到指定环境下的问题(已解决)

    参考文章 xff1a https blog 51cto com u 15060549 4662570 login 61 from csdn 大致意思就是通过修改site py文件中的 这段代码 xff0c 将这两个变量修改为环境自身的路径即
  • 使用Java实现HDFS文件读写

    1 HDFS读文件 2 HDFS写文件 3 实例操作 3 1新建Mawen工程 3 2在pom xml中将标签中内容替换为以下代码 xff0c 静待依赖包下载完毕 lt dependencies gt lt dependency gt lt
  • GD32F303移植FreeRTOS多任务调度只能执行一个任务解决办法

    1 问题描述 GD32F303移植完FreeRTOS后创建多个任务 xff0c 运行的时候只有一个任务在运行 xff0c 其余任务处于卡死不运行状态 xff0c void start task void pvParameters taskE
  • npm显示升级到最新版本仍然显示npm为原版本的问题解决

    文章目录 前言一 问题描述二 问题原因三 解决方法1 查看npm安装路径2 修改npm全局安装路径命令3 npm更新命令 总结 前言 在升级npm版本时遇到了显示版本升级成功 xff0c 但是在继续执行npm v命令查看npm版本时仍然显示
  • 教你做一个属于自己的平衡小车,用STM32F103单片机实现(代码篇)

    平衡小车软件篇 平衡小车硬件篇 目录 一 定时器相关代码 1 TIM2 2 TIM3和TIM4 二 中断相关代码 三 电机相关代码 四 OLED屏幕和MUP6050相关代码 五 PID函数 1 直立环 2 速度环 3 转向环 六 控制函数
  • MySQL报错Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column whic

    报错信息 报错信息及语句如下 span class token keyword SELECT span i span class token punctuation span sku id sku id span class token p
  • Ros2 Foxy:apt-get update过程中密钥问题

    本人在Ubuntu20 04中根据官方文档Foxy安装Rox2出现 The following signatures couldn t be verified because the public key is not available
  • CSS解决高度塌陷的几种方式

    浮动元素对兄弟元素的影响 当设置元素浮动时 xff0c 会脱离文档流 xff0c 飘在不设置浮动兄弟元素的上面 xff0c 不占据底下的屏幕位置 注意文字是不会被浮动元素覆盖掉 清除浮动的方式 两个元素同时设置浮动 clear both 清
  • Integer值比较

    包装类与基本数据类型 包装类是将基本数据类型封装成一个类 xff0c 包含属性和名称 使用 xff1a 在使用过程中 xff0c 会涉及到自动装箱和自动拆箱 装箱 xff1a 将基本数据类型转换成包装类 span class token c
  • java理解向上转型和向下转型

    在讲述向上转型和向下转型之前 我们先简单讲解下多态 如果后续看了有关多态的讲解还是不弄 只能自己上网去查阅和理解 多态概念 多态是面向对象程序设计 xff08 OOP xff09 的一个重要特征 xff0c 指同一个实体同时具有多种形式 x
  • LCD1602和12864简单的介绍

    实验室培训总结1 这个寒假有幸参与到了学校的实验室培训 xff0c 真的是受益良多 xff0c 也学习到了芯片的使用 先讲以下首先学习到了1602的液晶屏的使用 xff0c 驱动一个模块无非就是通过根据所给的时序图进行一系列的编写 xff0
  • msOs

    对ms0S的总结 由于msOS对比51比较难学 xff0c 这里也不太好总结 xff0c 第一印象是就是功能太强大 xff0c 很多寄存器都封装在一个结构体里面 xff0c 方便调用 xff0c 因为这个msOs基于STM32进行改变等待
  • MySQL学习-体系架构

    连接层 最上层 xff08 客户端连接器到连接池这一部分 xff09 是一些客户端和链接服务 xff0c 主要完成一些类似于连接处理 授权认证 及相关的安全方案 服务器也会为安全接入的每个客户端验证它所具有的操作权限 服务层 第二层架构 x
  • 有关显示器的缩放比例和分辨率的设置问题

    今天我们来讨论桌面 显示设置中的这两个功能 缩放比例 xff1a 首先我们要知道计算机的显示器图像的显示是靠底层的发光片来实现的 xff08 每个发光片都是一个像素点 xff09 而大显示器和小显示器每个像素点的大小不同 xff0c 但是如
  • TS快速入门-函数

    在TS里 xff0c 虽然已经支持类 xff0c 命名空间和模块 xff0c 但函数仍然是主要的定义行为的地方 TS中的函数大部分和JS相同 不同之处在于ts会给函数返回值和参数加上类型声明 在TS中 xff0c 函数仍然是最基本 最重要的
  • SpringBoot整合shiro——简单的demo

    结构目录 前端页面代码部分 index html span class token doctype span class token punctuation lt span span class token doctype tag DOCT
  • Kali Linux的vi编辑器/vim编辑器使用方法

    转载声明 xff1a 本文为转载文章 原文地址 xff1a https www 52host cn blog kali linux vi editor Kali Linux系统的vi编辑器 vim编辑器的使用和CentOS有很多不同 基本使
  • 〖小狼毫〗小狼毫使用教程『完善版本』

    一 声明 因为我这里只有win10电脑 xff0c 就以win10系统电脑五笔86输入方案为例 xff0c 其他系统的可以这此为基础进行参考 xff1b 个人建议先在虚拟机里配置好 xff0c 再移到宿主机上 xff08 大佬除外 xff0
  • podman网络、常用命令、以及容器的开机自启

    目录 1 podman网络1 1 rootfull和rootless容器网络之间的差异1 2 防火墙1 3 容器间通信示例 xff1a 1 4 查看防火墙规则 2 podman常用命令3 容器的开机自启3 1 root用户3 2 普通用户