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
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