Podman

podman容器的开机自启

ROOT用户

创建容器不启动

[root@localhost ~]# podman create --name nginx nginx:latest
a105edbc50c1c593279dd968b9d799cb8be9f995e636811cdca398161b6d9a0d

生成service文件

[root@localhost ~]# podman generate systemd --files --name nginx
/root/container-nginx.service

移动到systemd下

[root@localhost ~]# podman generate systemd --files --name nginx
/root/container-nginx.service
[root@localhost ~]# mv container-nginx.service /usr/lib/systemd/system/
[root@localhost ~]# systemctl status container-nginx
● container-nginx.service - Podman container-nginx.service
   Loaded: loaded (/usr/lib/systemd/system/container-nginx.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:podman-generate-systemd(1)

容器设置开机自启

[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 Wed 2021-12-15 04:37:43 CST; 10s ago
     Docs: man:podman-generate-systemd(1)
  Process: 3545 ExecStart=/usr/bin/podman start nginx (code=exited, status=0/SUCCESS)
 Main PID: 3637 (conmon)
    Tasks: 2 (limit: 23491)
   Memory: 1.9M
   CGroup: /system.slice/container-nginx.service
           └─3637 /usr/bin/conmon --api-version 1 -c a105edbc50c1c593279dd968b9d799cb8be9f995e636811cdca398161b6d9a0d -u a105edbc50c1c593>

普通用户

切换用户

[root@localhost ~]# su - mkf

创建一个容器不启动

[mkf@localhost ~]$ podman create --name web nginx:latest
ae654fe471a2fed9789c7003401739b314857adfbf5239ad31ccfceae2dcfd3f

创建一个用户

[mkf@localhost ~]$ cd .config/
[mkf@localhost .config]$ mkdir -p systemd/user
[mkf@localhost .config]$ tree
.
└── systemd
    └── user

生成service文件

[mkf@localhost user]$ podman generate systemd --files --name web
/home/admin/.config/systemd/user/container-web.service
//关闭容器
[mkf@localhost user]$ podman stop httpd
httpd
[mkf@localhost user]$ podman ps
CONTAINER ID  IMAGE       COMMAND     CREATED     STATUS      PORTS       NAMES

//加载一下系统服务
[mkf@localhost user]$ systemctl --user daemon-reload


//立即启用服务
[mkf@localhost user]$ systemctl --user enable container-httpd.service --now
Created symlink /home/mkf/.config/systemd/user/multi-user.target.wants/container-httpd.service → /home/mkf/.config/systemd/user/container-httpd.service.
Created symlink /home/mkf/.config/systemd/user/default.target.wants/container-httpd.service → /home/mkf/.config/systemd/user/container-httpd.service.


//查看服务的状态,已经处于运行状态
[mkf@localhost user]$ systemctl --user status container-httpd.service
● container-httpd.service - Podman container-httpd.service
   Loaded: loaded (/home/mkf/.config/systemd/user/container-httpd.service; enabled; vendor preset:>
   Active: active (running) since Wed 2021-12-15 04:16:49 CST; 1min 2s ago
     Docs: man:podman-generate-systemd(1)
  Process: 156584 ExecStartPre=/bin/rm -f /run/user/1000/container-httpd.service.ctr-id (code=exi>
 Main PID: 156666 (conmon)
   CGroup: /user.slice/user-1000.slice/user@1000.service/container-httpd.service
           ├─156646 /usr/bin/fuse-overlayfs -o ,lowerdir=/home/mkf/.local/share/containers/storage>
           ├─156647 /usr/bin/slirp4netns --disable-host-loopback --mtu=65520 --enable-sandbox --e>
           ├─156651 containers-rootlessport
           ├─156657 containers-rootlessport-child
           ├─156666 /usr/bin/conmon --api-version 1 -c 1bffe49cb00a11ee8d4a4ae8b21ae73f442c0e76c3>
           ├─156669 httpd -DFOREGROUND
           ├─156692 httpd -DFOREGROUND
           ├─156693 httpd -DFOREGROUND
           └─156694 httpd -DFOREGROUND


//此时查看是否有容器在运行,本来我们已经手动关闭,但只要服务启动,就会自动创建新的容器,只要服务关闭,该容器就会自动删除,非常人性化
#而且此服务不需要root或sudo提权,普通用户即可对其进行控制,使用systemctl命令
[mkf@localhost user]$ podman ps
CONTAINER ID  IMAGE                           COMMAND           CREATED             STATUS                 PORTS                   NAMES
1bffe49cb00a  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up About a minute ago  0.0.0.0:8080->8080/tcp  httpd


//服务关闭,容器自动删除,而且还可以做到开机自动创建,关机自动删除
[mkf@localhost user]$ systemctl --user stop container-httpd.service 
[mkf@localhost user]$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS                     PORTS       NAMES

[mkf@localhost user]$ systemctl --user start container-httpd.service 
[mkf@localhost user]$ podman ps -a
CONTAINER ID  IMAGE                           COMMAND               CREATED         STATUS                     PORTS                   NAMES
6616be7602ed  docker.io/library/httpd:latest  httpd-foreground      4 seconds ago   Up 4 seconds ago           0.0.0.0:8080->8080/tcp  httpd

podman网络

在没有运行过容器的时候,本机是没有podman0这个网卡的,一旦运行过容器不管这个容器是否存在或者状态如何这个网卡依旧存在,而docker是docker守护进程一起动就会有一个docker0的网卡,默认情况下这个网卡的IP地址是所有容器的网关地址
查看没有运行过容器时podman网络的状态

[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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:9e:92:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.147.133/24 brd 192.168.147.255 scope global dynamic noprefixroute ens160
       valid_lft 1717sec preferred_lft 1717sec
    inet6 fe80::d68f:1be3:2ad4:4605/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

运行过一个容器过后,就会出现podman0这个网卡

[root@localhost ~]# podman run -d --name httpd docker.io/library/httpd
[root@localhost ~]# podman ps 
CONTAINER ID  IMAGE                           COMMAND           CREATED             STATUS                 PORTS       NAMES
c7c39352b2e9  docker.io/library/httpd:latest  httpd-foreground  About a minute ago  Up About a minute ago              httpd

//查看ip
[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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a7:ed:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.147.133/24 brd 192.168.147.255 scope global dynamic noprefixroute ens160
       valid_lft 1797sec preferred_lft 1797sec
    inet6 fe80::b7d8:f396:bd33:bc34/64 scope link noprefixroute 
       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 86:73:1d:74:1d:34 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::8473:1dff:fe74:1d34/64 scope link 
       valid_lft forever preferred_lft forever
4: vetha777c1a9@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master cni-podman0 state UP group default 
    link/ether e2:b9:bf:61:ac:66 brd ff:ff:ff:ff:ff:ff link-netns cni-1e4e81ac-ad29-47b2-8dc4-abc02efbb892
    inet6 fe80::e0b9:bfff:fe61:ac66/64 scope link 
       valid_lft forever preferred_lft forever


//关闭容器,cni-podman0网卡依然在
[root@localhost ~]# podman stop httpd 
httpd
[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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a7:ed:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.147.133/24 brd 192.168.147.255 scope global dynamic noprefixroute ens160
       valid_lft 1363sec preferred_lft 1363sec
    inet6 fe80::b7d8:f396:bd33:bc34/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: cni-podman0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 86:73:1d:74:1d:34 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::8473:1dff:fe74:1d34/64 scope link 
       valid_lft forever preferred_lft forever

//删除容器,查看cni-podman0网卡
[root@localhost ~]# podman rm -l 
c7c39352b2e9f9952ae62936c3e5e0225d8e93b7b7b3b1204b3577d3922dbe52
[root@192 ~]# 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: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:a7:ed:84 brd ff:ff:ff:ff:ff:ff
    inet 192.168.147.133/24 brd 192.168.147.255 scope global dynamic noprefixroute ens160
       valid_lft 1293sec preferred_lft 1293sec
    inet6 fe80::b7d8:f396:bd33:bc34/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: cni-podman0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 86:73:1d:74:1d:34 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::8473:1dff:fe74:1d34/64 scope link 
       valid_lft forever preferred_lft forever
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值