SVX日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2024-06-25(Tue) UBIッ9

  同じことをRHELでやる場合には問題なくできるはず、なので、職場の環境でやってみることにした。が、RHELのコンテナイメージって、どうやって提供されているのだろう……Red Hatのサイトに置いてあったっけ? ログインしてダウンロードしてdocker importするとか? と、思ったら、なんと一般に公開されているので普通にdocker pullできるらしい。「ubi」で検索すると出てくるのがそれだ。「Universal Base Image」の略らしい。特段の契約なしに使ってもライセンス上の問題はないようだ。太っ腹だな。

# docker search ubi | grep 'ubi9[ -]'
docker.io    docker.io/redhat/ubi9                            Red Hat Universal Base Image 9
docker.io    docker.io/redhat/ubi9-minimal                    Red Hat Universal Base Image 9 Minimal
docker.io    docker.io/redhat/ubi9-micro                      Red Hat Universal Base Image 9 Micro
docker.io    docker.io/redhat/ubi9-init                       Red Hat Universal Base Image 9 Init
redhat.com   registry.access.redhat.com/ubi9                  rhcc_registry.access.redhat.com_ubi9
redhat.com   registry.access.redhat.com/ubi9-init             rhcc_registry.access.redhat.com_ubi9-init
redhat.com   registry.access.redhat.com/ubi9-micro            rhcc_registry.access.redhat.com_ubi9-micro
redhat.com   registry.access.redhat.com/ubi9-minimal          rhcc_registry.access.redhat.com_ubi9-minimal

  双方に各4タイプあるが本家の無印を使っておけばいいだろう。

# docker pull registry.access.redhat.com/ubi9

  とりあえず、自分が一番良く使うsinatra_skeltonのベースイメージを「fedora:39」から「ubi9:latest」に置き換えてビルドしてみるか……て、アレ? なんだか素でもdnfの処理が速くないか? 100以上のrpmパッケージを導入するってのに、なんだかサクサクな気がするぞ。

# docker-compose build --no-cache
  :
Red Hat Universal Base Image 9 (RPMs) - BaseOS  1.1 MB/s | 515 kB     00:00    
Red Hat Universal Base Image 9 (RPMs) - AppStre 2.6 MB/s | 2.0 MB     00:00    
Red Hat Universal Base Image 9 (RPMs) - CodeRea 784 kB/s | 274 kB     00:00    
  :
Total                                           5.6 MB/s | 116 MB     00:20     
  :
real	1m34.461s

  まぁでも、せっかくなのでslairを使うパターンも試してみよう。repoを置き換えるスクリプトはこんな感じに。

#!/bin/sh
 
rm /etc/yum.repos.d/*.repo
 
cat <<EOF >/etc/yum.repos.d/slair.repo
[Slair-BaseOS]
name=Red Hat Enterprise Linux 9.4 - BaseOS
baseurl=http://hostname/slair/indexes/discs/rhel-9.4-x86_64-dvd/BaseOS/
gpgcheck=0
[Slair-AppStream]
name=Red Hat Enterprise Linux 9.4 - AppStream
baseurl=http://hostname/slair/indexes/discs/rhel-9.4-x86_64-dvd/AppStream/
gpgcheck=0
EOF

  Dockerfileの冒頭はこんな感じに。

FROM ubi9:latest
 
ADD http://hostname/slair/indexes/misc/setup_repo_rhel94.sh /setup_repo_rhel94.sh
RUN bash /setup_repo_rhel94.sh
 
RUN set -x \
	&& dnf install -y \
		ruby \
		rubygem-bundler \
		ruby-devel \
		redhat-rpm-config \
  :
  :

  おぉ、速い。けど、ほとんど変わらない。ダウンロードは少し速いが、ビルド全体だと何秒か遅い。が、誤差程度だ。slairいらんやん。

# docker-compose build --no-cache
  :
Red Hat Enterprise Linux 9.4 - BaseOS           4.2 MB/s | 2.1 MB     00:00    
Red Hat Enterprise Linux 9.4 - AppStream        6.3 MB/s | 7.0 MB     00:01    
  :
Total                                           6.3 MB/s | 120 MB     00:19     
  :
real	1m38.762s

  ubiのコンテナでubiのリポジトリにアクセスするのは問題ないが、RHELのオフィシャルISOを食わせる場合は、ライセンス上サブスクリプション契約が必要になる。上記は職場環境での試行なので問題ないが、自宅では実施できない。ということで自宅では素のubiを試してみた。

# docker-compose build --no-cache
  :
Red Hat Universal Base Image 9 (RPMs) - BaseOS  1.2 MB/s | 515 kB     00:00    
Red Hat Universal Base Image 9 (RPMs) - AppStre 3.5 MB/s | 2.0 MB     00:00    
Red Hat Universal Base Image 9 (RPMs) - CodeRea 479 kB/s | 274 kB     00:00    
  :
Total                                           9.2 MB/s | 116 MB     00:12     
  :
real	1m21.979s

  自宅でも、むしろ速いやんけ。やっぱ、slairいらんやん。こんなことなら、これからベースイメージにはubiを使おうかしらん。

  改めてFedoraのdnfが遅い理由を確認してみると、ダウンロード速度が遅いのもあるが、リポジトリのカタログが大きいことが主たる原因のようだ。まぁ、Fedoraでしか使えないパッケージは多いからこれは仕方ない。

Fedora 39 - x86_64                              2.1 MB/s |  89 MB     00:41    
Fedora 39 openh264 (From Cisco) - x86_64        1.4 kB/s | 2.6 kB     00:01    
Fedora 39 - x86_64 - Updates                    2.5 MB/s |  39 MB     00:15    

  つうわけで、これからはubiメインで、不足する場合はfedoraを使うというのがよさそうである。プシュー。

  どうでもいいが、直前の記事を書いた時点では、特段UBIの存在を意識していなかったのに、今回の記事に奇跡的なネタ表題が付けられて満足……つっても、このネタを拾える人がどれだけいるのか……。