iT邦幫忙

2026 iThome 鐵人賽

DAY 3
0

在有Internet環境下安裝podman是沒問題,而客戶端的SIT/UAT環境是不能上Internet,所以要在下本機下載podman離線安裝包,結果還是踩了一堆雷。
下載方式是在本機podman起一個RedHat的Container,再從容器裡下載離線安裝包。雷點如下:

  1. 當時RedHat 9.x最新版是9.7,客戶端環境是RedHat 9.3安裝不起來,網上也沒有相容RedHat 9.3的Podman版本,最後只能要求客戶一定要升到9.7才能安裝,安裝Podman的版本是5.6.0。後來客戶端將RedHat升到9.8,而Podman版本最新是5.8.2,但5.6.0版仍可以在RedHat 9.8下運作。
  2. 客戶主機的作業系統既然是RedHat,下載用的容器就必須RedHat,當時以為開源的Rocky Linux也能做到,但事實上下載的podman安裝包無法在RedHat實機上安裝。
  3. 筆電CPU是Apple M4,而客戶大部份主機環境的CPU是Intel的x86(目前還沒見過客戶主機CPU架構不是x86的),所以當要建立RedHat容器若未指定platform是哪款CPU,podman pull image預設是以本機的CPU架構為下載標的,日後包版image,也需指定CPU架構。反之原本就是x86架構的筆電就沒這個問題。

爆雷完了,開始離線下載。在Mac安裝podman就下指令:brew install podman安裝搞定,若沒安裝brew則下安裝指令:/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

  • 安裝RedHat Container並進入容器裡
    podman run --platform=linux/amd64 -v $PWD/podman-rpms:/rpms -it registry.access.redhat.com/ubi9/ubi bash
    參數--platform=linux/amd64是指容器的CPU架構指定為Intel的AMD64,也就是x86標準。(--arch amd64也有相同效果)
    參數-v $PWD/podman-rpms:/rpms:下載離線安裝包掛載本機的podman_rpms目錄下。
    進入容器後,可以下指令cat /etc/os-release看RedHat的版本,目前是9.8
[root@15f959684284 /]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.8 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.8"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.8 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9"
BUG_REPORT_URL="https://issues.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.8
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.8"
  • 最後執行dnf download --resolve --destdir=/rpms podman指令下載podman相依套件到rpms目錄下,也就是本機的$PWD/podman_rpms目錄。
[root@15f959684284 /]# dnf download --resolve --destdir=/rpms podman
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Red Hat Universal Base Image 9 (RPMs) - BaseOS                                          764 kB/s | 534 kB     00:00    
Red Hat Universal Base Image 9 (RPMs) - AppStream                                       4.2 MB/s | 2.9 MB     00:00    
Red Hat Universal Base Image 9 (RPMs) - CodeReady Builder                               853 kB/s | 470 kB     00:00    
(1/28): slirp4netns-1.3.3-1.el9.x86_64.rpm                                              252 kB/s |  47 kB     00:00    
(2/28): conmon-2.2.1-2.el9_8.x86_64.rpm                                                 267 kB/s |  54 kB     00:00    
(3/28): libslirp-4.4.0-8.el9.x86_64.rpm                                                 336 kB/s |  70 kB     00:00    
(4/28): fuse-common-3.10.2-9.el9.x86_64.rpm                                             161 kB/s | 8.5 kB     00:00    
(5/28): criu-libs-3.19-3.el9.x86_64.rpm                                                 593 kB/s |  31 kB     00:00    
(6/28): containers-common-5.8-1.el9.x86_64.rpm                                          1.7 MB/s | 166 kB     00:00    
(7/28): criu-3.19-3.el9.x86_64.rpm                                                      4.1 MB/s | 557 kB     00:00    
(8/28): passt-0^20251210.gd04c480-6.el9_8.x86_64.rpm                                    3.2 MB/s | 288 kB     00:00    
(9/28): crun-1.27-1.el9_8.x86_64.rpm                                                    1.9 MB/s | 262 kB     00:00    
(10/28): shadow-utils-subid-4.9-16.el9.x86_64.rpm                                       579 kB/s |  85 kB     00:00    
(11/28): nftables-1.0.9-7.el9_8.x86_64.rpm                                              1.7 MB/s | 428 kB     00:00    
(12/28): libnetfilter_conntrack-1.0.9-1.el9.x86_64.rpm                                  635 kB/s |  61 kB     00:00    
(13/28): libnfnetlink-1.0.1-23.el9_5.x86_64.rpm                                         418 kB/s |  31 kB     00:00    
(14/28): libnftnl-1.2.6-4.el9_4.x86_64.rpm                                              1.7 MB/s |  89 kB     00:00    
(15/28): iptables-libs-1.8.10-11.el9_5.x86_64.rpm                                       4.1 MB/s | 466 kB     00:00    
(16/28): libnl3-3.11.0-1.el9.x86_64.rpm                                                 3.5 MB/s | 367 kB     00:00    
(17/28): yajl-2.1.0-25.el9.x86_64.rpm                                                   1.1 MB/s |  41 kB     00:00    
(18/28): netavark-1.17.2-1.el9.x86_64.rpm                                               5.6 MB/s | 3.1 MB     00:00    
(19/28): jansson-2.14-1.el9.x86_64.rpm                                                  950 kB/s |  48 kB     00:00    
(20/28): aardvark-dns-1.17.1-1.el9_8.x86_64.rpm                                          10 MB/s | 887 kB     00:00    
(21/28): fuse-overlayfs-1.16-1.el9_7.x86_64.rpm                                         499 kB/s |  66 kB     00:00    
(22/28): kmod-28-11.el9.x86_64.rpm                                                      961 kB/s | 125 kB     00:00    
(23/28): fuse3-3.10.2-9.el9.x86_64.rpm                                                  606 kB/s |  57 kB     00:00    
(24/28): fuse3-libs-3.10.2-9.el9.x86_64.rpm                                             1.0 MB/s |  93 kB     00:00    
(25/28): libnet-1.2-7.el9.x86_64.rpm                                                    621 kB/s |  60 kB     00:00    
(26/28): protobuf-c-1.3.3-13.el9.x86_64.rpm                                             571 kB/s |  37 kB     00:00    
(27/28): podman-5.8.2-5.el9_8.x86_64.rpm                                                 15 MB/s |  17 MB     00:01    
(28/28): iptables-nft-1.8.10-11.el9_5.x86_64.rpm                                        101 kB/s | 209 kB     00:02  

再看本機的podman_rpms內容如下:

podman-rpms % ls
aardvark-dns-1.17.1-1.el9_8.x86_64.rpm		libnet-1.2-7.el9.x86_64.rpm
conmon-2.2.1-2.el9_8.x86_64.rpm			libnetfilter_conntrack-1.0.9-1.el9.x86_64.rpm
containers-common-5.8-1.el9.x86_64.rpm		libnfnetlink-1.0.1-23.el9_5.x86_64.rpm
criu-3.19-3.el9.x86_64.rpm			libnftnl-1.2.6-4.el9_4.x86_64.rpm
criu-libs-3.19-3.el9.x86_64.rpm			libnl3-3.11.0-1.el9.x86_64.rpm
crun-1.27-1.el9_8.x86_64.rpm			libslirp-4.4.0-8.el9.x86_64.rpm
fuse-common-3.10.2-9.el9.x86_64.rpm		netavark-1.17.2-1.el9.x86_64.rpm
fuse-overlayfs-1.16-1.el9_7.x86_64.rpm		nftables-1.0.9-7.el9_8.x86_64.rpm
fuse3-3.10.2-9.el9.x86_64.rpm			passt-0^20251210.gd04c480-6.el9_8.x86_64.rpm
fuse3-libs-3.10.2-9.el9.x86_64.rpm		podman-5.8.2-5.el9_8.x86_64.rpm
iptables-libs-1.8.10-11.el9_5.x86_64.rpm	protobuf-c-1.3.3-13.el9.x86_64.rpm
iptables-nft-1.8.10-11.el9_5.x86_64.rpm		shadow-utils-subid-4.9-16.el9.x86_64.rpm
jansson-2.14-1.el9.x86_64.rpm			slirp4netns-1.3.3-1.el9.x86_64.rpm
kmod-28-11.el9.x86_64.rpm			yajl-2.1.0-25.el9.x86_64.rpm

可以看到podman-5.8.2-5.el9_8.x86_64.rpm這個檔,表示下載的podman版本是最新的5.8.2版。

  • 最後將podman-rpms子目錄壓縮成tar.gz,作為在客戶環境的離線安裝包。
tar cvf ../podman-rpms.tar *.rpm
gzip podman-rpms.tar 

上一篇
容器服務化的基本流程
下一篇
離線安裝Podman
系列文
Podman Quadlet-容器服務化(在單體系統到微服務之間)12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言