最近新装了Centos8,运行docker时,发现服务器有提示使用Podman。

后来了解才发现 CentOS8 使用 Podman 作为默认的容器管理工具了。相比docker,具有不少新的优势。

查询了相关文档,了解到,Podman(Pod Manager)是一个功能齐全的容器引擎,它是一个简单的无守护工具。 Podman提供了一个类似Docker-CLI的命令行,可以简化从其他容器引擎的转换,并允许管理pod,容器和图像。

Podman 的用法几乎和原来的 docker 一样,命令基本都一样。下面就看看 Podman 怎样来管理容器吧。

相比Docker优势

podman 相对与 docker 来说,最明显的变化是 podman 不需要启动一个后台服务,可以直接运行了,并且可以使用普通用户来运行。

1
2
3
4
5
6
7
8
9
podman images

podman run -d -p 8000:80 nginx

podman ps

podman inspect nginx //获取容器元数据

podman inspect nginx | grep IPAddress //显示容器的内部ip

区别

用户权限不同

不需要访问 root 权限组,podman 可以在非root账号下运行容器,所以,什么身份进行操作也是比较重要的。

以普通用户和以root身份pull下来的images存储位置不同,并且, “podman image list” 只显示当前用户拉取的镜像。

不过要注意挂载目录的权限。可以使用--privileged参数,获取更高权限控制。

1
2
3
4
5
6
podman run -itd --name mynginx \
-h nginx \
--privileged=true \
-p 80:80 \
-v /home/html:/usr/share/nginx/html \
nginx

开机启动不同

由于podman不是守护进程,所以开机后该服务不会自动启动。

所以,不能像docker那样,随着docker的启动,控制各个容器达成的服务也自动开启。 因此,要使用systemd服务来进行设定

参考文档

CentOS8.2中的Podman使用初探-以搭建LNMP-seafile-onlyoffice为情景