Red Hatソリューションアーキテクトの小島です。
Red Hat Enterprise Linux (RHEL) 8からはRHEL7で導入されたDocker技術が削除され、Podman, Buildah, Skopeoなどの新しいコンテナ技術が導入されました。PodmanとBuildahについては赤帽エンジニアブログの他の記事で既に紹介されていますが、ここではPodman, Buildah, UBI(RHELをベースにした無償提供のコンテナイメージ)の具体的な利用手順を、スライド(P.7~)にまとめています。また、Red Hat Developer Programに参加して開発者向けの無償サブスクリプションを入手することで、これらの手順を無料で試してみることができます。Red Hat Developer Programについては下記の記事も参考にしてください。
↓利用手順例(コピペ用)
Podmanのインストール
$ sudo subscription-manager register $ sudo subscription-manager attach --auto $ sudo yum -y install podman $ sudo yum -y install podman-docker <- podman-dockerは、dockerという名前でpodmanコマンドへのシンボリックリンクを作成するためのパッケージ(オプション)
Podmanの利用例
$ podman pull registry.access.redhat.com/ubi8/ubi:latest $ podman run --name test01 -it registry.access.redhat.com/ubi8/ubi:latest /bin/bash [root@c21ad143c67f /]# yum -y install httpd [root@c21ad143c67f /]# exit $ podman ps -a CONTAINER ID IMAGE COMMAND CREATED NAMES aeb95fb38a18 registry.access.redhat.com/ubi8/ubi:latest /bin/bash 38 seconds ago test01 $ podman start -ai test01 [root@aeb95fb38a18 /]# exit $ podman commit test01 httpd_ubi_01 $ podman images REPOSITORY TAG IMAGE ID CREATED SIZE localhost/httpd_ubi_01 latest d610cfd1a46f About a minute ago 242 MB registry.access.redhat.com/ubi8/ubi latest ecbc6f53bba0 2 weeks ago 211 MB
UBIとDockerfileを利用したコンテナイメージの作成例
$ cat << EOF > myecho > echo "This container works!!" > EOF $ cat << EOF > Dockerfile > FROM registry.access.redhat.com/ubi8/ubi > ADD myecho /usr/local/bin > ENTRYPOINT "/usr/local/bin/myecho" > EOF $ chmod +x myecho $ ./myecho This container works!! $ ls Dockerfile myecho $ podman build . STEP 1: FROM registry.access.redhat.com/ubi8/ubi ... Storing signatures STEP 2: ADD myecho /usr/local/bin 9f842e451aeb46b0852a33362f0632d182008631e30ead39fa03bbd5ac8eb18f STEP 3: ENTRYPOINT "/usr/local/bin/myecho" STEP 4: COMMIT 0db4e77ef97e260c24129434881a51d06dcb32f5f38aaecf193aca62aa60c890 $ podman images REPOSITORY TAG IMAGE ID CREATED SIZE <none> <none> 0db4e77ef97e 2 minutes ago 211 MB registry.access.redhat.com/ubi8/ubi latest ecbc6f53bba0 2 weeks ago 211 MB
Red Hat Quay.io(無料かつ無制限に利用可能なパブリックレジストリのSaaSを提供)へのイメージのpush例
$ podman login quay.io Username: <your_user_name> Password: <your_password> Login Succeeded! $ podman images $ podman tag <作成したイメージのContainer ID> quay.io/<your_user_name>/myecho $ podman push quay.io/<your_user_name>/myecho
Buildahのインストールと利用例
$ sudo yum -y install buildah $ buildah from scratch <- 「working-container」という名前のscratchコンテナを作成 working-container $ buildah unshare <- 特権ユーザの権限を利用して、コンテナのrootファイルシステムをユーザのホームディレクトリの中にマウントできるようになります # scratchmnt=$(buildah mount working-container) <- scratchコンテナのrootファイルシステムをマウント # yum install -y --releasever=8 --installroot=$scratchmnt redhat-release <- scratchコンテナでのRPMデータベースの初期化とredhat-releaseパッケージの追加 # yum install -y --setopt=reposdir=/etc/yum.repos.d \ --installroot=$scratchmnt \ --setopt=cachedir=/tmp/cache/dnf bash <- scratchコンテナへのbashのインストール # echo "echo Your container from scratch worked." > $scratchmnt/usr/local/bin/myecho <- scratchコンテナにmyechoファイルの追加 # chmod +x $scratchmnt/usr/local/bin/myecho # buildah config --entrypoint "/usr/local/bin/myecho" working-container <- コンテナ起動時にmyechoファイルを実行することを指定 # buildah commit working-container localhost/myecho:latest <- scratchコンテナの変更をコミットして「localhost/myecho」イメージを作成 # exit $ podman run localhost/myecho <- buildahで作成したイメージをpodmanで起動 Your container from scratch worked.