AnolisOS 8.4 下编译 podman

最近看了鱼友 @zido 的文章Docker 要凉了?

所以打算试试把公司产品的运行环境尝试切换成podman+crun。

同时由于CentOS8停服及系统国产化要求,所以要在国产系统上进行运行,而这些系统(AnolisOS、OpenEuler、Kylin)自己的软件源都不够齐全,带的podman版本也是非常旧的,所以只能自己编译了。

编译方法主要参考:

官方文档

环境

AnolisOS 8.4

安装必要组件:

dnf install conmon \
containernetworking-plugins \
containers-common \
device-mapper-devel \
glib2-devel \
glibc-devel \
glibc-static \
gpgme-devel \
iptables \
libassuan-devel \
libgpg-error-devel \
libseccomp-devel \
libselinux-devel
dnf install gcc gcc-c++ make autoconf automake pkgconfig git golang wget

编译外围组件

golang

export GOPATH=~/go
git clone https://github.com/golang/go.git $GOPATH
cd $GOPATH
cd src
./all.bash
export PATH=$GOPATH/bin:$PATH

btrfs-progs

dnf install python3 python36 python36-devel util-linux libblkid libblkid-devel libzstd-devel zlib-devel lzo-devel e2fsprogs-devel
wget https://github.com/kdave/btrfs-progs/archive/refs/tags/v5.18.1.tar.gz
tar zxf v5.18.1.tar.gz 
cd btrfs-progs-5.18.1/
./autogen.sh 
./configure --disable-documentation
make -j4
make install

编译podman

wget https://github.com/containers/podman/archive/refs/tags/v4.1.1.tar.gz

tar zxvf v4.1.1.tar.gz

cd podman-4.1.1

make BUILDTAGS="selinux seccomp"

make install

整理文件

上一步 make install 后可以看到一些文件被复制了

bin目录下的 podman 和 podman-remote 届时放目标服务器的 /usr/bin/

bin目录下的 rootlessport 放到目标服务器的 /usr/libexec/podman/

/etc/containers/ 下的配置文件取 policy.conf、registries.conf、storage.conf 即可

registries.conf 内容可以参考 @zido 的文章。

make install后复制到 /usr/lib/systemd/system/ 下的几个服务文件也复制过来,不一定用。

CNI Plugins 下载地址CNI Plugins

image.png

install.sh内容

\cp -rf podman/* /usr/
\cp -f system/* /usr/lib/systemd/system/
\cp -f podman.conf /usr/lib/tmpfiles.d/
\cp -rf cni /opt/
cd rpm
rpm -Uvh *.rpm

crun

这个不需要编译

wget https://github.com/containers/crun/releases/download/1.4.5/crun-1.4.5-linux-amd64

chmod +x crun-1.4.5-linux-amd64

cp crun-1.4.5-linux-amd64 /usr/bin/crun

conmon

这个也不需要编译

wget https://github.com/containers/conmon/releases/download/v2.1.2/conmon.amd64

chmod +x conmon.amd64

cp conmon.amd64 /usr/bin/conmon

   
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

    25 引用
  • 虚拟化

    4 引用