Podman安装
目录
Podman 是一个无守护、开源的 Linux 本地工具,旨在使用 open Containers Initiative (OCI) 让容器和镜像更加方便地查找、运行、构建、共享和部署应用程序。Podman 提供了一个命令行接口(CLI),任何使用过 Docker 容器引擎的人都能很快上手 podman。大多数用户可以简单地将 Podman 别名为 Docker (alias Docker = Podman),没有任何问题。与其他常见的容器引擎 (Docker、CRI-O、containerd) 类似,Podman 依赖于符合 OCI 的容器运行时(runc、cron、runv等) 来与操作系统交互并创建运行的容器。这使得由 Podman 创建的正在运行的容器与由任何其他通用容器引擎创建的容器几乎没有区别。
Podman 比较简单粗暴,它不使用 Daemon,而是直接通过 OCI runtime(默认也是 runc)来启动容器,所以容器的进程是 podman 的子进程。这比较像 Linux 的 fork/exec 模型,而 Docker 采用的是 C/S(客户端/服务器)模型。与 C/S 模型相比,fork/exec 模型有很多优势,比如:
-
如果利用 cgroup 对 podman 做一些限制,那么所有创建的容器都会被限制。
-
如果将 podman 命令放入 systemd 单元文件中,容器进程可以通过 podman 返回通知,表明服务已准备好接收任务。
-
可以将连接的 socket 从 systemd 传递到 podman,并传递到容器进程以便使用它们。
安装
[root@podman ~]# yum -y install podman [root@podman ~]# ps -aux |grep podman root 35152 0.0 0.0 9212 1160 pts/0 S+ 22:42 0:00 grep --color=auto podman [root@podman ~]# podman -v podman version 4.0.2 [root@podman ~]# podman images REPOSITORY TAG IMAGE ID CREATED SIZE root@podman ~]# podman --help Manage pods, containers and images Usage: podman [options] [command] Available Commands: attach Attach to a running container auto-update Auto update containers according to their auto-update policy build Build an image using instructions from Containerfiles commit Create new image based on the changed container container Manage containers cp Copy files/folders between a container and the local filesystem create Create but do not start a container diff Display the changes to the object's file -------------------------
可以发现,使用方式可以说和 docker 的丝毫不差,不用担心从 docker 切换到 podman 会有不习惯的。如果不习惯使用 podman 命令,可以使用 alias docker=podman 来对docker命令做一个映射。
加速链接获取 详细请阅读docker 基本用法
默认镜像库 文件 /etc/containers/registries.conf 是设置镜像地址配置文件,默认会搜索 ['registry.access.redhat.com', 'registry.redhat.io', 'docker.io', 'quay.io']等几个镜像库。
不过,这几个镜像库下载速度非常慢,可以说是基本无法顺利的将镜像拉下来。 所以,需要修改修改镜像库配置文件,也就是大家说的镜像加速方案。
镜像加速
只需2个步骤实现镜像加速: 1.改名并备份好文件:/etc/containers/registries.conf.bak 2.再新建一个空的 registries.conf 文件,插入如下内容 unqualified-search-registries = ["docker.io"] [[registry]] prefix = "docker.io" location = "******.mirror.aliyuncs.com" 3.修改 location 网易:https://hub-mirror.c.163.com/ 阿里云:https://<你的ID>.mirror.aliyuncs.com 4.保存
配置:
# 修改podman镜像源 [root@podman ~]# vim /etc/containers/registries.conf unqualified-search-registries = ["docker.io"] #podman默认的镜像拉取镜像地址第一个是红毛的,改成docker的 [[registry]] prefix = "docker.io" location = "fi54miqv.mirror.aliyuncs.com" #试一下 [root@podman ~]# podman login Username: ********** Password: Login Succeeded!
操作
[root@podman ~]# podman pull httpd #和docker相似,拉去镜像httpd ------------- [root@podman ~]# podman run -d --name httpd docker.io/library/httpd:latest 2684bce8b0b52a51fe9fbb6081b057e51a3b455da68fedae2a69868607728eab [root@podman ~]# podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2684bce8b0b5 docker.io/library/httpd:latest httpd-foreground 5 seconds ago Up 5 seconds ago httpd [root@podman ~]# podman exec -it httpd /bin/bash root@2684bce8b0b5:/usr/local/apache2# podman export将容器的文件系统内容导出为 tar 存档 history显示指定图像的 images列出本地存储中的图像 导入tarball 以创建文件系统映像 info显示 podman 系统信息 init初始化一个或多个容器 kill用特定的信号杀死一个或多个正在运行的容器 kube play等 logs获取容器的日志、 machine管理 podman 的虚拟机 manifest创建和操作清单列表和图像索引 mount挂载一个工作容器的根文件系统 pause暂停一个或多个容器中的所有进程 pod管理 pod port列出端口映射或容器的特定映射 ps列出容器 push将图片推送到指定目的地 rename重命名现有容器