CentOS 7 上编译安装 Podman 3.4.4

2,204 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

ntos 因为gpgme-devel版本过于老旧,所以无法支持Podman 4.x,支持最高版本为 3.4.4

目前Centos 7extras源安装 podman,安装的版本为 v1.6.4,而截止目前(2022年4月2日),podman最新版本为: v4.0.2,版本差距迭代太大,而github发布的版本中没有linux版本。所以我打算编译安装一下。

其中包含以下内容

  1. golang 安装(当前最新版本: 1.18)
  2. conmon 安装(当前最新版本: 2.1.0)
  3. runc 安装(当前最新版本: 1.1.1)
  4. podman安装(centos 7支持最高版本: 3.4.4)

centos extras podman 版本

so ,要是用较高版本,则需要我们自行构建一下

为避免安装过程中出现为止问题,请临时关闭selinux

setenforce 0

在centos 7上安装podman 3.4.4

在Centos 7 上安装golang

如果你的机器环境上没有golang环境的话,则需要先安装golang,版本需要在 v1.6 以上

查看golang版本

安装相关依赖

conmon 和 runc 安装

conmon

查看conmon版本

conmon是用C语言编写的工具,用于单个容器的管理器。和 OCI runc 或者 OCI crun通信

当容器运行时,conmon会做以下事情

  1. 提供一个用于附加到容器的套接字,保持打开容器的标准流并且通过套接字转发它们
  2. 将容器流的内容写入日志文件,以便在容器退出后读取它们

runc

查看runc版本

runcgolang写的关于CLI工具,用于根据OCI规范在 Linux上生成和运行容器。

设置CNI网络

默认情况下,CNI网络配置文件下载好后,无需配置,即可使用 podman

registries.conf: 容器镜像注册配置文件,文件格式为 TOML

policy.json:证书安全策略文件,文件格式为 JSON

安装podman

查看podman版本

podman支持可选的构建便签,用于编译支持各种功能,将要构建的标签添加到make选项,BUILDTAGS必须设置变量,例如 BUILDTAGS="selinux seccomp"

测试启动一个nginx容器

我们查看 系统占用:8081端口信息,我们会发现,进程是 conmon

心得体会

1、 最开始安装的时候,安装的是目前最新版本 v4.0.2,结果在make过程中抛错

github上了解到 是gpgme-devel引起的,主要原因还是 Centos 7太老了。

github.com/containers/…