简介
什么是Podman?
官网描述: Podman是一个无守护进程的容器引擎,用于在Linux系统上开发、管理和运行OCI容器(开源的容器管理工具
)。容器可以作为根运行,也可以以无根模式运行。简单地说:alias docker=podman
简单的说它是下一代容器。
官网 : Podman Github 项目: GitHub - containers/podman: Podman: A tool for managing OCI containers and pods.
- 以前使用 Docker CLI 的时候它会通过 gRPC API 去跟 Docker Engine 说「我要启动一个容器」,然后 Docker Engine 才会通过
OCI Container runtime
(默认是 runc)来启动一个容器;意味着容器的进程不可能是 Docker CLI 的子进程而是 Docker Engine 的子进程。 - Podman 比较简单粗暴它不使用 Daemon,而是直接通过 OCI runtime(默认也是 runc)来启动容器所以容器的进程是 podman 的子进程(
相当于是省去了中间商,减少了赚差价
),比较像 Linux 的 fork/exec
特点:
Podman有何特点:
- 1.没有 Daemon (守护进程) 直接通过 OCI runtime(默认也是runc)来启动容器,所以容器的进程是 podman 的子进程;
- 2.采用类似于Linux中
"fork/exec模型"
相比较于”C/S模型”有一定的优势。 - 3.能够以非 root 用户的身份去运行容器
- 4.引入注册表的概念其内部包括docker.io在内的多个容器镜像源,默认的有
redhat docker fedora centos quay
podman和docker对比
Podman VS Docker
- (1) 模型对比
- Podman: fork/exec 模型
- Docker: C/S 模型
- (2) 启动模式:
- 前者直接OCI containner runtime(runc)进行交互来创建container的
- 后者通过API跟 Docker Engine(引擎)请求才会调用OCI container runtime(runc)来启动一个container
- (3) 守护进程
- 前者容器不支持–restart策略但是可以通过编写systemd服务来完成自启动
- 后者因有docker daemon,所以docker启动的容器支持–restart策略
- (4) 权限对比
- 前者可以非root用户创建容器
- 后者必须使用root用户来创建容器
常用命令:
安装podman
[root@localhost ~]# yum install -y podman
拉去镜像
podman pull 镜像名
[root@localhost ~]# podman pull nginx
Trying to pull registry.access.redhat.com/nginx...
unsupported: This repo requires terms acceptance and is only available on registry.redhat.io
Trying to pull registry.redhat.io/nginx...
unable to retrieve auth token: invalid username/password: unauthorized: Please login to the Red Hat Registry using your Customer Portal credentials. Further instructions can be found here: https://access.redhat.com/RegistryAuthentication
Trying to pull docker.io/library/nginx...
Getting image source signatures
Copying blob 77700c52c969 done
Copying blob 881ff011f1c9 done
Copying blob e5ae68f74026 done
Copying blob 21e0df283cd6 done
Copying blob ed835de16acd done
Copying blob 44be98c0fab6 done
Copying config f652ca386e done
Writing manifest to image destination
Storing signatures
f652ca386ed135a4cbe356333e08ef0816f81b2ac8d0619af01e2b256837ed3e
查看镜像
podman images
[root@localhost ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/nginx latest f652ca386ed1 12 days ago 146 MB
创建容器
podman create
[root@localhost ~]# podman create nginx
fef816f6ad1ec42f56eae8a167bf7432f7aa8273f3aeaa47c32956ef0452eea0
启动容器
podman start
[root@localhost ~]# podman start fef816f6ad1ec42f56eae8a167bf7432f7aa8273f3aeaa47c32956ef0452eea0
fef816f6ad1ec42f56eae8a167bf7432f7aa8273f3aeaa47c32956ef0452eea0
查看容器
podman container ls
[root@localhost ~]# podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fef816f6ad1e docker.io/library/nginx:latest nginx -g daemon o... About a minute ago Up