更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 如何在CentOS 7/RHEL 7系统上安装Podman 4.x

如何在CentOS 7/RHEL 7系统上安装Podman 4.x

更新时间:2023-01-27 10:10:34浏览次数:947+次

本文介绍如何在CentOS 7/RHEL 7系统上安装Podman 4.x的方法。

前言

如果您在CentOS 7/RHEL 7上从OS默认存储库安装Podman,则会安装较旧版本的软件。以下是CentOS 7虚拟机的输出:

$ podman version

Version: 1.6.4

RemoteAPI Version: 1

Go Version: go1.12.12

OS/Arch: linux/amd64

在本文中,我们将介绍在CentOS 7/RHEL 7上安装Podman 4.x。在CentOS 7/RHEL 7系统上获取Podman 4.x的途径是从源代码构建应用程序。

在继续之前,请卸载系统中任何旧版本的Podman:

sudo yum -y remove podman

具体操作步骤

步骤1、安装Podman 4.x构建工具

因为我们是从源代码构建软件,所以必须安装所需的所有工具。确保EPEL存储库已安装并在系统中启用:

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

更新系统上的所有软件包并重新启动:

sudo yum -y update

sudo reboot

在CentOS 7/RHEL 7上安装开发工具:

sudo yum -y install "@Development Tools"

通过运行以下命令安装其他依赖项:

sudo yum install -y curl \

  gcc \

  make \

  device-mapper-devel \

  git \

  btrfs-progs-devel \

  conmon \

  containernetworking-plugins \

  containers-common \

  git \

  glib2-devel \

  glibc-devel \

  glibc-static \

  golang-github-cpuguy83-md2man \

  gpgme-devel \

  iptables \

  libassuan-devel \

  libgpg-error-devel \

  libseccomp-devel \

  libselinux-devel \

  pkgconfig \

  systemd-devel \

  autoconf \

  python3 \

  python3-devel \

  python3-pip \

  yajl-devel \

  libcap-devel

等待这些依赖项的安装完成,然后继续执行步骤2。

步骤2、在CentOS 7/RHEL 7上安装Golang的说明

使用以下共享的链接在CentOS 7/RHEL 7上安装Go:

在CentOS 7/RHEL 7系统上安装Go(Golang)的方法:https://www.hmxthome.com/linux/5012.html

成功安装后检查Go版本:

$ go version

go version go1.19 linux/amd64

步骤3、安装runc和conmon

Conmon用于监视OCI运行时间,并且该包预期安装在系统上。可以使用下面共享的命令完成安装:

cd ~

git clone https://github.com/containers/conmon

cd conmon

export GOCACHE="$(mktemp -d)"

make

sudo make podman

cd ..

安装后检查版本:

$ conmon --version

conmon version 2.0.8

commit: f85c8b1ce77b73bcd48b2d802396321217008762

对runc包执行相同的构建:

git clone https://github.com/opencontainers/runc.git $GOPATH/src/github.com/opencontainers/runc

cd $GOPATH/src/github.com/opencontainers/runc

make BUILDTAGS="selinux seccomp"

sudo cp runc /usr/bin/runc

cd ~/

使用–version命令选项检查版本:

$ runc --version

runc version 1.1.0+dev

commit: v1.1.0-276-gbc13e33

spec: 1.0.2-dev

go: go1.19

libseccomp: 2.3.1

步骤4、为Podman设置CNI网络

创建用于存储CNI网络配置文件的/etc/containers目录:

sudo mkdir -p /etc/containers

下载配置示例并放置创建的目录:

sudo curl -L -o /etc/containers/registries.conf https://src.fedoraproject.org/rpms/containers-common/raw/main/f/registries.conf

sudo curl -L -o /etc/containers/policy.json https://src.fedoraproject.org/rpms/containers-common/raw/main/f/default-policy.json

步骤5、在CentOS 7/RHEL 7上安装Podman 4.x

安装wget命令行实用程序包:

sudo yum -y install wget

从Github存储库下载最新或所要安装的目标版本Podman源代码,地址在https://github.com/containers/podman/releases,比如截止至发稿时候,可安装v4.3.1或是v4.4.0-RC3版本,本文以安装目标版本4.1.1为例:

TAG=4.1.1

rm -rf podman*

wget https://github.com/containers/podman/archive/refs/tags/v${TAG}.tar.gz

使用tar命令提取下载的文件:

tar xvf v${TAG}.tar.gz

导航到podman目录并开始构建过程:

cd podman*/

make BUILDTAGS="selinux seccomp"

sudo make install PREFIX=/usr

如果在生成过程中遇到以下错误:

gcc errors for preamble:

In file included from vendor/github.com/proglottis/gpgme/data.go:6:0:

./go_gpgme.h:15:1: error: unknown type name 'gpgme_off_t'

 extern gpgme_off_t gogpgme_data_seek(gpgme_data_t dh, gpgme_off_t offset, int whence);

./go_gpgme.h:15:55: error: unknown type name 'gpgme_off_t'

 extern gpgme_off_t gogpgme_data_seek(gpgme_data_t dh, gpgme_off_t offset, int whence);

make: *** [bin/podman] Error 2

该问题在Podman 4 bug问题页面中捕获,地址在https://github.com/containers/podman/issues/13281。建议快速修复是更新pgpme包:

sudo yum remove  gpgme-devel -y

sudo yum -y install https://cbs.centos.org/kojifiles/packages/gpgme/1.7.1/0.el7.centos.1/x86_64/gpgme-1.7.1-0.el7.centos.1.x86_64.rpm

sudo yum -y install https://cbs.centos.org/kojifiles/packages/gpgme/1.7.1/0.el7.centos.1/x86_64/gpgme-devel-1.7.1-0.el7.centos.1.x86_64.rpm

更新后重试生成:

make BUILDTAGS="selinux seccomp"

sudo make install PREFIX=/usr

可用生成标记、功能和依赖项列表如下截图:

\

向override_kernel_check配置行添加注释:

sudo sed -ie 's/override_kernel_check/#override_kernel_check/g' /etc/containers/storage.conf

您可以在构建后检查CentOS 7/RHEL 7上安装的Podman 4版本:

$ podman  version

Client: Podman Engine

Version: 4.1.1

API Version: 4.1.1

Go Version: go1.19

OS/Arch: linux/amd64

让我们使用podman pull命令测试image下载:

$ podman pull docker.io/library/alpine:latest

Trying to pull docker.io/library/alpine:latest...

Getting image source signatures

Copying blob 2408cc74d12b done

Copying config e66264b987 done

Writing manifest to image destination

Storing signatures

e66264b98777e12192600bf9b4d663655c98a090072e1bab49e233d7531d1294

您也可以运行Docker Hello World容器来确认这一点:

$ podman run docker.io/library/hello-world

\

至此,在CentOS 7/RHEL 7系统上安装Podman 4版本成功。