PodmanとBuildahとSkopeoを使ったコンテナ管理
概要
今はコンテナ=Dockerの流れがありますが、Red Hatが開発しているRed Hat Enterprise Linux8には標準でDockerツールが無くなっています。
Dockerは、Docker Daemonにあらゆる機能を含む設計となっており、DockerイメージのPushやPull、ストレージの管理などさまざまなことができます。なんでもできるので合理的で便利でしたが、コンテナ利用が進むにつれてRoot権限での実行やデーモンプロセス停止時に全機能停止といったリスクが生じてきて、機能に応じたツールの分離やRootlessModeの必要性が議論されるようになりました。
そこでコンテナのフォーマット・ランタイムの業界標準策定を目的として設立されたイニシアチブであるOpen Container Initiative(OCI)がそれぞれの機能の仕様を作成し、ライブラリの開発が進むにつれて、コンテナイメージの転送、イメージのビルドからPodの管理まで、単体で対応するツールが開発されるようになりました。それが以下の3つのツールです。
- Podman
- Buildah
- Skopeo
Podmanとは
PodmanはKubernetesを用いずにローカルでPodの停止や起動を管理するツールです。
以下の特徴があります。
- Daemonを起動させる必要がない(Daemonless)
- Root権限を要求しない一般ユーザーでPodを起動できる(Rootless mode)
- DockerでビルドしたイメージをPodmanで起動できる(OCI Compatible)
他にもPodmanはDockerとコマンドラインに互換性があることからdockerコマンドと同じような使い方がpodmanコマンドで実現できます。
ただし一部のdockerのoptionは削除されているようです。(network,nodeなど)
詳しくはこちらをご参照ください。
Buidahとは
BuidalhはOCI準拠のコンテナイメージをビルドし、レジストリにプッシュするツールです。
Podmanと機能で重複する部分もありますが、Buildahはあくまでもコンテナのイメージビルドするのに必要最低限な機能を範囲でコンテナを起動させるように機能を制限されています。
Skopeoとは
Skopeoは、コンテナイメージをコピーするクライアントツールです。
イメージの署名、検証を行なえるのもSkopeoの大きな特徴です。
この記事では、Dockerを使わずにこれらのツールを用いてrootユーザーではない一般ユーザーでコンテナ操作をできる方法を紹介いたします。
各種環境ツール
- OS:CentOS8.2
- podman 1.6.4
- buildah 1.11.6
- skopeo 0.1.40
インストールする方法や各種ツールの使い方などはRed Hatの公式ページが一番分かりやすいと思われますので、基本的にこれに沿って色々と検証していきたいと思います。
各種インストールと初期設定
インストール方法としては、一個一個インストールしてもいいですが、こちらのコマンドを使えば一括でインストールできます。
# yum(dnf) module install -y container-tools
次に冒頭で話したとおり、root以外のユーザーでコンテナ操作できるようにルートレスコンテナの設定をします。
ユーザーの名前空間を増やす
名前空間(namespace)とは、システムに存在するさまざまな種類のリソースについて存在し、所属するプロセスに見かけ上で独立したリソースを見せる機能です。正直なところ私自身もこの辺の概論を理解できるとは言い難くいい加減なことが言えないのですが、ユーザーの名前空間は独立したuser id、group idを見せることになります。詳しくはSoftware Design2020年7月号の「試して理解Linuxのしくみコーナー」をご参照ください。
話しを戻しまして、その名前空間を以下のコマンドを用いて増やしていきます。# echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
# sysctl -p /etc/sysctl.d/userns.conf
この状態で非rootユーザーにしたうえでpodman
でイメージを取得できることを確かめてみます。
$ podman pull registry.access.redhat.com/ubi8/ubi
$ podman run registry.access.redhat.com/ubi8/ubi cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.2 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.2"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.2 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.2:GA"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.2
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.2"
Red Hatが提供しているUniversal Base Images (UBI)を取得し、イメージからコンテナを起動しています。
起動したコンテナに対してcat /etc/os-releaseでコンテナのOSバージョン情報を参照しています。
非rootユーザーでpodmanを実行してコンテナ操作をできることを確認できました。次は各種操作について説明していきます。
イメージの検索とpull
イメージの検索はpodman search <イメージ名>
でヒットします。
$ podman search node
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
redhat.com registry.access.redhat.com/openshift3/node Provides a containerized OpenShift Node with... 0
redhat.com registry.access.redhat.com/openshift3/prometheus-node-exporter Prometheus exporter for hardware and OS metr... 0
redhat.com registry.access.redhat.com/codeready-workspaces/stacks-node Red Hat CodeReady Workspaces - Node Stack co... 0
redhat.com registry.access.redhat.com/rhel7/kubernetes-scheduler The Kubernetes scheduler watches for new un-... 0
redhat.com registry.access.redhat.com/openshift3/metrics-hawkular-openshift-agent Hawkular OpenShift Agent is a Hawkular feed ... 0
redhat.com registry.access.redhat.com/openshift3/ose-node-problem-detector Node Problem Detector monitors OpenShift nod... 0
redhat.com registry.access.redhat.com/openshift3/ose-metrics-heapster Retrieves container and node metrics from an... 0
redhat.com registry.access.redhat.com/openshift3/metrics-heapster Retrieves container and node metrics from an... 0
redhat.com registry.access.redhat.com/openshift3/ose-keepalived-ipfailover Optional Pod providing keepalived support fo... 0
redhat.com registry.access.redhat.com/openshift3/ose-metrics-hawkular-openshift-agent Hawkular OpenShift Agent is a Hawkular feed ... 0
redhat.com registry.access.redhat.com/openshift3/ose-node Provides a containerized OpenShift Node with... 0
redhat.com registry.access.redhat.com/amqstreams-1/amqstreams10-kafkaconnect-openshift AMQ Streams image for running an Apache Kafk... 0
redhat.io registry.redhat.io/openshift3/node Provides a containerized OpenShift Node with... 0
redhat.io registry.redhat.io/openshift4/ose-prometheus-node-exporter Prometheus exporter for hardware and OS metr... 0
redhat.io registry.redhat.io/openshift4/ose-cluster-node-tuning-operator 'OpenShift Node Tuning Operator' 0
redhat.io registry.redhat.io/openshift4/ose-node 'OpenShift Container Platform Node' 0
redhat.io registry.redhat.io/openshift3/prometheus-node-exporter Prometheus exporter for hardware and OS metr... 0
redhat.io registry.redhat.io/openshift4/ose-csi-node-driver-registrar CSI Node Driver Registar 0
redhat.io registry.redhat.io/openshift4/ose-node-feature-discovery Node Feature Discovery Container Image 0
redhat.io registry.redhat.io/openshift4/ose-cluster-nfd-operator Node Feature Discovery (NFD) Operator 0
redhat.io registry.redhat.io/codeready-workspaces/stacks-node Red Hat CodeReady Workspaces - Node Stack co... 0
redhat.io registry.redhat.io/codeready-workspaces/stacks-node-rhel8 Red Hat CodeReady Workspaces - Node 10 Stack 0
redhat.io registry.redhat.io/codeready-workspaces/plugin-java8-rhel8 Red Hat CodeReady Workspaces - Java 8 plugin... 0
redhat.io registry.redhat.io/rhel7/kubernetes-scheduler The Kubernetes scheduler watches for new un-... 0
redhat.io registry.redhat.io/openshift3/metrics-hawkular-openshift-agent Hawkular OpenShift Agent is a Hawkular feed ... 0
redhat.io registry.redhat.io/openshift3/ose-node-problem-detector Node Problem Detector monitors OpenShift nod... 0
redhat.io registry.redhat.io/openshift3/ose-metrics-heapster Retrieves container and node metrics from an... 0
redhat.io registry.redhat.io/openshift3/metrics-heapster Retrieves container and node metrics from an... 0
redhat.io registry.redhat.io/openshift3/ose-metrics-hawkular-openshift-agent Hawkular OpenShift Agent is a Hawkular feed ... 0
redhat.io registry.redhat.io/openshift3/ose-keepalived-ipfailover Optional Pod providing keepalived support fo... 0
redhat.io registry.redhat.io/container-native-virtualization/node-maintenance-operator Red Hat Container Native Virtualization imag... 0
redhat.io registry.redhat.io/openshift3/ose-node Provides a containerized OpenShift Node with... 0
redhat.io registry.redhat.io/amqstreams-1/amqstreams10-kafkaconnect-openshift AMQ Streams image for running an Apache Kafk... 0
redhat.io registry.redhat.io/openshift4/ose-cluster-machine-approver 'Validates and approves CSRs for nodes attem... 0
redhat.io registry.redhat.io/container-native-virtiualization/node-maintenance-rhel8-operator Red Hat Container Native Virtualization imag... 0
redhat.io registry.redhat.io/openshift4/ose-ptp Linuxptp daemonset to apply ptp configuratio... 0
redhat.io registry.redhat.io/container-native-virtualization/kubevirt-cpu-node-labeller Red Hat Container Native Virtualization imag... 0
docker.io docker.io/library/node Node.js is a JavaScript-based platform for s... 9152 [OK]
docker.io docker.io/nodered/node-red-docker Deprecated - older Node-RED Docker images. 351 [OK]
docker.io docker.io/bitnami/node Bitnami Node.js Docker Image 45 [OK]
docker.io docker.io/appsvc/node Azure App Service Node.js dockerfiles 14 [OK]
docker.io docker.io/circleci/node Node.js is a JavaScript-based platform for s... 110
docker.io docker.io/prom/node-exporter 193 [OK]
docker.io docker.io/calico/node Calico's per-host DaemonSet container image.... 19 [OK]
docker.io docker.io/library/mongo-express Web-based MongoDB admin interface, written w... 754 [OK]
docker.io docker.io/iron/node Tiny Node image 29
docker.io docker.io/bitnami/node-exporter Bitnami Node Exporter Docker Image 2 [OK]
docker.io docker.io/kkarczmarczyk/node-yarn Node docker image with yarn package manager ... 48 [OK]
docker.io docker.io/nodered/node-red Low-code programming for event-driven applic... 175
docker.io docker.io/nodecg/nodecg Create broadcast graphics using Node.js and ... 1 [OK]
docker.io docker.io/selenium/node-chrome 213 [OK]
docker.io docker.io/appsvctest/node node build 0 [OK]
docker.io docker.io/library/iojs io.js is an npm compatible platform original... 135 [OK]
docker.io docker.io/camptocamp/node-collectd rancher node monitoring agent 0 [OK]
docker.io docker.io/ppc64le/node Node.js is a JavaScript-based platform for s... 2
docker.io docker.io/testim/node-chrome Selenium Chrome Node + Testim Extension 0 [OK]
docker.io docker.io/digitallyseamless/nodejs-bower-grunt Node.js w/ Bower & Grunt Dockerfile for tru... 48 [OK]
docker.io docker.io/cusspvz/node ? Super small Node.js container (~15MB) b... 8 [OK]
docker.io docker.io/ogazitt/node-env node app that shows environment variables 2
docker.io docker.io/basi/node-exporter Node exporter image that allows to expose th... 8 [OK]
docker.io docker.io/selenium/node-firefox 136 [OK]
docker.io docker.io/tarampampam/node Docker image, based on node, with some addit... 2 [OK]
--filter=is-official
で配布元が公式のイメージのみに絞ってフィルターできます。
$ podman search node --filter=is-official
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/library/node Node.js is a JavaScript-based platform for s... 9152 [OK]
docker.io docker.io/library/mongo-express Web-based MongoDB admin interface, written w... 757 [OK]
docker.io docker.io/library/iojs io.js is an npm compatible platform original... 135 [OK]
そして、Dockerと同様に、podman pull <イメージ名>
でイメージをローカルに持ってくることができます。
$ podman pull docker.io/library/node
Trying to pull docker.io/library/node...
Getting image source signatures
Copying blob de30e8b35015 done
Copying blob 419e7ae5bb1e done
Copying blob 7ec8a0667334 done
Copying blob 848839e0cd3b done
#~~~~~中略~~~~~~~
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/node latest 784e696f5060 2 weeks ago 972 MB
ただ個人的に気になったのが、このイメージはどこに格納されているのだろうということです。
DockerイメージはDocker Hubに格納されていて、docker search
でDocker Hubにあるイメージを検索していることが、公式からリファレンスされています。
ですが、podman search
はどこから探しているのか良くわかりませんでした。
レジストリ名がdocker.ioのものは、Docker Hubから持ってきていると思いますが、registry.redhat.io
と記載されているものは一体どこからとってきているのでしょうか?(Red Hat独自の格納先があるのかな🤔)
(追記情報:こちらから参照できるようです)
コンテナの起動
podmanもdockerと同様、podman run
でコンテナを起動できます。
$ podman run -it --rm node bash
root@cc0bf2c6cc65:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
イメージのビルド
buildahコマンドでイメージのビルドを行なうことが可能で、Dockerfileもbuildah bud
コマンドでビルドできます。(公式でチュートリアルがありますのでそちらを参照)
ちなみにbuildah images
でもpodmanでpullしてきたイメージ一覧が表示できます。
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/johndoe/webserver latest 6d36abc8f72f 24 minutes ago 245 MB
registry.access.redhat.com/ubi8/ubi latest a1f8c9699786 5 weeks ago 211 MB
registry.access.redhat.com/ubi8/ubi-minimal latest 86c870596572 5 weeks ago 146 MB
$ buildah images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/johndoe/webserver latest 6d36abc8f72f 24 minutes ago 245 MB
registry.access.redhat.com/ubi8/ubi latest a1f8c9699786 5 weeks ago 211 MB
registry.access.redhat.com/ubi8/ubi-minimal latest 86c870596572 5 weeks ago 146 MB
以下の構成になっているDockerfileに対して、buildahコマンドでビルドしていきます。
# ls
Dockerfile myecho
# cat Dockerfile
FROM registry.access.redhat.com/ubi8/ubi:latest
ADD myecho /usr/local/bin
ENTRYPOINT "/usr/local/bin/myecho"
# cat myecho
echo "This container works!"
# chmod 755 myecho
# ./myecho
This container works!
Dockerfileを作成しましたら、 buildah bud -t fedora-httpd .
コマンドを実行します。
ファイル内の命令文に従って、イメージがビルドされできあがっていくことが確認できましたら、コンテナを実行してみます。
$ buildah images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/myecho-container latest 5098f73df28e 50 seconds ago 211 MB
$ podman run localhost/myecho-container
This container works!
buildahのチュートリアルですと、buildah run
でコンテナを起動できるそうですが、失敗しました。
$ buildah run localhost/myecho-container
command must be specified
ERRO exit status 1
Red Hatのページですと、podmanで確認していますので、コンテナの起動は基本的にpodmanで行なうのでしょうか?
コンテナ、イメージの削除
コンテナやイメージの削除はdockerと同様、rm
オプションで削除できます。
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06a79ab009f3 registry.access.redhat.com/ubi8/ubi:latest /bin/bash 3 minutes ago Exited (1) About a minute ago mystifying_jepsen
e8a1c6fbc91f localhost/johndoe/webserver:latest -D FOREGROUND 29 hours ago Exited (135) 28 hours ago 0.0.0.0:8080->80/tcp agitated_morse
$ podman rm e8a1c6fbc91f
e8a1c6fbc91f9252f13a34e6a2275078cdadef196e135bb32330784b8d012ad3
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
06a79ab009f3 registry.access.redhat.com/ubi8/ubi:latest /bin/bash 4 minutes ago Exited (1) 3 minutes ago mystifying_jepsen
イメージも同じようにrmi
オプションで削除できます。
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/johndoe/webserver latest 6d36abc8f72f 29 hours ago 245 MB
registry.access.redhat.com/ubi8/ubi latest a1f8c9699786 5 weeks ago 211 MB
registry.access.redhat.com/ubi8/ubi-minimal latest 86c870596572 5 weeks ago 146 MB
docker.io/library/fedora latest a368cbcfa678 7 weeks ago 189 MB
$ podman rmi docker.io/library/fedora
Untagged: docker.io/library/fedora:latest
Deleted: a368cbcfa6789bc347345f6d19132afe138b62ff5373d2aa5f37120277c90b54
$ podman rmi 86c870596572
Untagged: registry.access.redhat.com/ubi8/ubi-minimal:latest
Deleted: 86c870596572a5b4fe016f4fb7ae9d181e88df6ac91d2cb15250c5e053cfad15
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/johndoe/webserver latest 6d36abc8f72f 29 hours ago 245 MB
registry.access.redhat.com/ubi8/ubi latest a1f8c9699786 5 weeks ago 211 MB
Kube pod yaml ファイルの作成
podman generate
で、KubernetesのPodsファイルを作成できます。
mariadbのコンテナプロセスを実行させて、`podman generate'コマンドでKubernetes yamlを出力させたら、それをファイルに落とし込みます。
$ podman run -d -e MYSQL_USER=user -e MYSQL_PASSWORD=pass \
> -e MYSQL_DATABASE=db -p 3306:3306 --name mymariadb rhscl/mariadb-102-rhel7
Trying to pull registry.access.redhat.com/rhscl/mariadb-102-rhel7...
Getting image source signatures
Copying blob 9e7a6dc796f0 done
Copying blob e7021e0589e9 done
Copying blob fc5b206e9329 [======================================] 72.7MiB / 72.7MiB
Copying blob 98b39311ee6a done
Copying config 5ca39d258f done
Writing manifest to image destination
Storing signatures
8e994c65e7a24febfa57c6cc79c44c7fce37c8593a087d9efb5c45b994169b48
$ podman ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8e994c65e7a2 registry.access.redhat.com/rhscl/mariadb-102-rhel7:latest run-mysqld 41 seconds ago Up 40 seconds ago 0.0.0.0:3306->3306/tcp mymariadb
$ podman generate kube mymariadb > mymariadbkube.yaml
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-1.9.3
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2020-08-29T05:37:11Z"
labels:
app: mymariadb
name: mymariadb
spec:
containers:
- command:
- run-mysqld
env:
- name: PATH
value: /opt/app-root/src/bin:/opt/app-root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: TERM
value: xterm
- name: HOSTNAME
- name: container
value: oci
- name: STI_SCRIPTS_URL
value: image:///usr/libexec/s2i
- name: MYSQL_PASSWORD
value: pass
- name: ENABLED_COLLECTIONS
value: rh-mariadb102
- name: PROMPT_COMMAND
value: . /usr/share/container-scripts/mysql/scl_enable
- name: HOME
value: /var/lib/mysql
- name: ENV
value: /usr/share/container-scripts/mysql/scl_enable
- name: PLATFORM
value: el7
- name: STI_SCRIPTS_PATH
value: /usr/libexec/s2i
- name: MYSQL_USER
value: user
- name: MYSQL_DATABASE
value: db
- name: DESCRIPTION
value: MariaDB is a multi-user, multi-threaded SQL database server. The container
image provides a containerized packaging of the MariaDB mysqld daemon and
client application. The mysqld server daemon accepts connections from clients
and provides access to content from MariaDB databases on behalf of the clients.
- name: SUMMARY
value: MariaDB 10.2 SQL database server
- name: APP_ROOT
value: /opt/app-root
- name: MYSQL_PREFIX
value: /opt/rh/rh-mariadb102/root/usr
- name: APP_DATA
value: /opt/app-root/src
- name: BASH_ENV
value: /usr/share/container-scripts/mysql/scl_enable
- name: CONTAINER_SCRIPTS_PATH
value: /usr/share/container-scripts/mysql
- name: MYSQL_VERSION
value: "10.2"
image: registry.access.redhat.com/rhscl/mariadb-102-rhel7:latest
name: mymariadb
ports:
- containerPort: 3306
hostPort: 3306
protocol: TCP
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
runAsGroup: 27
runAsUser: 27
seLinuxOptions: {}
workingDir: /opt/app-root/src
status: {}
後はこのyamlファイルに対して、kubectlコマンドでPodsを作成します。
kubectl create -f mymariadbkube.yaml
コンテナの検証、コピー
コンテナの検証やコピーはskopeo
の出番です。
podman inspect
でもコンテナの検証を行なえますが、skopeo inspect
はローカル以外のレジストリのコンテナに対して検証できます。
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.access.redhat.com/ubi8/ubi latest a1f8c9699786 5 weeks ago 211 MB
registry.access.redhat.com/rhscl/mariadb-102-rhel7 latest 5ca39d258f0f 5 weeks ago 453 MB
$ skopeo inspect docker://docker.io/library/mariadb
{
"Name": "docker.io/library/mariadb",
"Digest": "sha256:e694a07f60a2bef2c48de9a2c852d05f8be9c76a8170b16f98809977398db07a",
"RepoTags": [
"10-bionic",
"10-focal",
"10-jessie",
"10.0-jessie",
"10.0-xenial",
"10.0.15",
"10.0.16",
"10.0.17",
"10.0.19",
"10.0.20",
"10.0.21",
"10.0.22",
~~~~~~~~~~~~~~~~~~~~~~
またレジストリ上に保存されているコンテナイメージをローカルディレクトリにコピーすることもskopeo copy
でできます。
$ skopeo copy docker://docker.io/library/mariadb dir:.
$ ls -l
total 122688
-rw-r--r--. 1 ec2-user ec2-user 88901239 Aug 29 07:11 02feccc98f4b2946613780337354f5604f8d00667805d84ceb1b61474c7b6b4a
-rw-r--r--. 1 ec2-user ec2-user 1748 Aug 29 07:10 2323729e927cfe2be88cc2e2caeda6ffcc6d6753664e3b4d3fdd7bbb9ce670ff
-rw-r--r--. 1 ec2-user ec2-user 848 Aug 29 07:10 46d371e02073acecf750a166495a63358517af793de739a51b680c973fae8fb9
-rw-r--r--. 1 ec2-user ec2-user 28558017 Aug 29 07:10 54ee1f796a1e650627269605cb8e6a596b77b324e6f0a1e4443dc41def0e58a6
-rw-r--r--. 1 ec2-user ec2-user 2490 Aug 29 07:10 59c8c535eac7735e2455e58434cdf60675269c0aafff0a084eac0f927d756879
-rw-r--r--. 1 ec2-user ec2-user 115 Aug 29 07:10 8755f332386c098209a480e5ded3d1e6963e6c790e2e3d5a04b6e42db2cd505c
-rw-r--r--. 1 ec2-user ec2-user 5487680 Aug 29 07:10 9885993533ab4b717050038a600f3d2b8114e0666f93426a022142acf7bce15f
-rw-r--r--. 1 ec2-user ec2-user 324 Aug 29 07:11 aa69d1f3a7646b7e1832d206152575807a1ae05c1f585574c9612cdc3858a1ef
-rw-r--r--. 1 ec2-user ec2-user 9134 Aug 29 07:11 b28df07deb6ccdeb7bf62a98fef8aba2a627c6ae83f8b154c22147ad2a7ce8bc
-rw-r--r--. 1 ec2-user ec2-user 162 Aug 29 07:10 b66c17bbf772fa072c280b10fe87bc999420042b5fce5b111db38b4fe7c40b49
-rw-r--r--. 1 ec2-user ec2-user 1323258 Aug 29 07:10 cfe7961792be6d67e4fd29a2c4c58d64c33fb633f2a3e29827e19f68bc64019a
-rw-r--r--. 1 ec2-user ec2-user 5058 Aug 29 07:11 de57dda5b9ed56abd561b129e0aa60b6e9947d268663874f54528ac5794d6997
-rw-r--r--. 1 ec2-user ec2-user 32336 Aug 29 07:10 f7bfea53ad120b47cea5488f0b8331e737a97b33003517b0bd05e83925b578f0
-rw-r--r--. 1 ec2-user ec2-user 1265053 Aug 29 07:10 fd987b19db3c2cfca1c918384d11cc08ee234ae8600c6019f2328ba10e2d4df9
-rw-r--r--. 1 ec2-user ec2-user 3035 Aug 29 07:11 manifest.json
-rw-r--r--. 1 ec2-user ec2-user 33 Aug 29 07:10 version
所感
簡単にはなりますが、一通り各種ツールの扱い方を説明しました。
podman
がコンテナを管理でき、buildah
がコンテナのイメージ作成を(デーモンを使用せずに)行ない、skopeo
がコンテナのイメージをコピーするという住み分けになるようです。
Red Hatさんのリファレンスが丁寧なおかげである程度進められましたが、これをどのようにDockerに替わって扱うかはまだ私の理解が足りてないところがありますので、少しずつ触って理解を深めていこうと思います。
LT資料
LTのスライド資料です。
少し増量したLTを行ないましたので増量版のLT資料も置いておきます。
Discussion