# 官方提供@yunTaoScripts PODMAN 🔥🔥
Podman是一个开源项目,可在大多数Linux平台上使用并开源在GitHub上。Podman是一个 无守护进程 的容器引擎,用于在Linux系统上开发,管理和运行Open Container Initiative(OCI)容器和容器镜像。Podman提供了一个与Docker兼容的命令行前端,它可以简单地作为Docker cli,简单地说你可以直接添加别名:
alias docker = podman
来使用podman。Podman控制下的容器可以由root用户运行,也可以由非特权用户运行。Podman管理整个容器的生态系统,其包括pod,容器,容器镜像,和使用libpod library的容器卷。Podman专注于帮助您维护和修改OCI容器镜像的所有命令和功能,例如拉取和标记。它允许您在生产环境中创建,运行和维护从这些映像创建的容器。
# runtime 运行时
# 低级别运行时
删除容器,创建容器,不提供网路。
- runc (docker,containerd 调用)
- lxc
- gvisor
- kata
# 高级别运行时
高级别运行时通过调用低级别运行时完成管理容器。
- docker
- containerd
- podman
- rkt
- cri-o
# 镜像管理
- 安装podman
[root@server1 ~]# podman info| grep oci -C 5
ociRuntime:
name: runc
package: runc-1.0.0-70.rc92.module+el8.4.0+10607+f4da7515.x86_64
path: /usr/bin/runc
version: 'runc version spec: 1.0.2-dev'
os: linux
- 仓库地址
[root@server1 ~]# podman info| grep regis -A 5
registries:
search:
- registry.access.redhat.com
- registry.redhat.io
- docker.io
- 拉取镜像
[root@server1 ~]# podman pull docker.io/nginx
Trying to pull docker.io/library/nginx:latest...
# 容器管理
- 指定容器端口 80
[root@server1 ~]# podman run -dit --name=ng -p 80 docker.io/library/nginx
b8f86b9f85e12a81b84d45de5888a013c289f6b3363db2a97df5b1b643de9e9e
[root@server1 ~]# podman port ng
80/tcp -> 0.0.0.0:40681
- 挂载数据卷
[root@server1 ~]# podman run -dit --name=ng -p 80 -v /data_ph:/data docker.io/library/nginx
612d1e5a5f5a59407dccada66e3618a8b5f2e40bfb83ea8b4f7dcf3274766a66
[root@server1 ~]# cd /data_ph/
[root@server1 data_ph]# touch xx
-rw-r--r--. 1 root root 0 Sep 5 14:47 xx
[root@server1 data_ph]# ls -lZ
-rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Sep 5 14:47 xx
[root@server1 data_ph]# podman exec -it ng bash
root@612d1e5a5f5a:/# ls /data
ls: cannot open directory '/data': Permission denied
开启了selinux 容器无法访问挂载目录,增加`:Z`提供访问权限
[root@server1 data_ph]# podman run -dit --name=ng -p 80 -v /data_ph:/data:Z docker.io/library/nginx
d9e719a7c05596b89e4e16a1105447c3791031f8410b66fac8f150c8a5d11851
[root@server1 data_ph]# podman exec -it ng bash
root@d9e719a7c055:/# ls -l /data
-rw-r--r--. 1 root root 0 Sep 5 06:47 xx
[root@server1 data_ph]# ls -lZ /data_ph/
-rw-r--r--. 1 root root system_u:object_r:container_file_t:s0:c775,c937 0 Sep 5 14:47 xx
- podman 创建的容器,物理机重启并不会重启容器。
# linger:当系统启动后,是否允许用户在ssh 或者登录控制台时自动触发容器,让容器启动。
[root@server1 ~]# loginctl show-user root | grep -i linger
Linger=no
[root@server1 ~]podman generate systemd --files --name ng ## 创建system 启动文件
[root@server1 ~]mkdir -p .config/systemd/user
[root@server1 ~]cp container-ng.service .config/systemd/user
[root@server1 user]# systemctl --user daemon-reload
[root@server1 user]# systemctl --user enable container-ng.service
Created symlink /root/.config/systemd/user/multi-user.target.wants/container-ng.service → /root/.config/systemd/user/container-ng.service.
Created symlink /root/.config/systemd/user/default.target.wants/container-ng.service → /root/.config/systemd/user/container-ng.service.
← 快速链接