概要
- 過去に macOS の podman に入門を試みたところ地雷を多く踏み挫折していた
- 3.2.x から macOS でお手軽に podman の実行環境がつくれるという、ワクワクする情報を知ったのでもう一度入門してみた
- 出典: 赤帽エンジニアブログ:【podman machine】macOS上でPodmanを実行する新コマンドの紹介
感謝!!
- 出典元の記事を参考に検証したものなので、詳しく知りたい方はそちらを参照
検証した環境
仕事で使う端末を想定して macOS で検証する
macOS のバージョン
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.7
BuildVersion: 19H1417
Podman の導入
- podman は docker 同様 linux コンテナをベースにした技術であるため実行には Linux が必須となる
- 実行する端末が Linux であれば Local の podman engine で動作させることができる
- macOS / Windows で実行する場合は遠隔の Linux に接続して engine 利用するオプションがある
Podman コマンドのインストール
コマンドは有り難いことに brew でインストールできる
$ brew install podman
※ podmanのインストールの依存関係で QEMU も同時にインストールされる
podman のバージョン確認
$ podman --version
podman version 3.3.1
podman の依存関係パッケージ(QEMU)の確認
$ brew deps --1 podman
qemu
podman コマンド動作確認
- 動作確認に
podman info
を実行してみるとエラーが出るが、これは macOS なので native の podman が動作しないため - コマンドが叩けることは確認できた
$ podman info
Error: cannot connect to the Podman socket, please verify that Podman REST API service is running: Get "http://d/v3.3.1/libpod/_ping": dial unix ///var/folders/xs/12nb8v4d295gj67gvymq3gldq44_nd/T/podman-run--1/podman/podman.sock: connect: no such file or directory
remote の podman に接続エントリはなし
$ podman system connection list
remote の podman engine を準備
- 古い公式の手順では、boot2podman + virtualbox で環境を作る手順だったが、現在は非推奨
- 概念的には docker-machine と同じなので、リモートホストは Fedora を導入できれば物理的に分かれていても良い
- Vagrant の box イメージが公式でサポートされているので、従来の Vagrant の資産を活用することもできる
- 最新では
podman machine
という QEMU を使うオプションが用意されているのでこの方法を使う
podman machine による QEMU インスタンスをセットアップする
-
podman machine init
コマンドを使用して初期セットアップを行う - podman machin で実行する Fedora CoreOS の仮想マシンイメージ(qcow2)がダウンロードされる
$ podman machine init
Downloading VM image: fedora-coreos-34.20210904.1.0-qemu.x86_64.qcow2.xz: done
Extracting compressed file
download されたイメージは以下のパスで管理されている
$ ls -l ~/.local/share/containers/podman/machine/qemu/
total 2212480
-rw-r--r-- 1 tigerroll 631490316 9 19 15:31 fedora-coreos-34.20210904.1.0-qemu.x86_64.qcow2.xz
-rw------- 1 tigerroll 1613824000 9 19 15:40 podman-machine-default_fedora-coreos-34.20210904.1.0-qemu.x86_64.qcow2
podman machine が起動していない状態では LAST UP
過去の時間が表示される
$ podman machine ls
NAME VM TYPE CREATED LAST UP
podman-machine-default* qemu 2 minutes ago 2 minutes ago
podman machine を起動する
$ podman machine start
INFO[0000] waiting for clients...
INFO[0000] listening tcp://0.0.0.0:7777
INFO[0000] new connection from to /var/folders/xs/12nb8v4d295gj67gvymq3gldq44_nd/T/podman/qemu_podman-machine-default.sock
Waiting for VM ...
qemu-system-x86_64: warning: host doesn't support requested feature: CPUID.80000001H:ECX.svm [bit 2]
正常に起動していることが確認できる
$ podman machine ls
NAME VM TYPE CREATED LAST UP
podman-machine-default* qemu 34 minutes ago Currently running
podman machine との接続設定
- podman machine への接続エントリが追加されていることが確認できた
- これらは起動時に自動で追加され、イメージを削除すると自動でエントリも削除される
$ podman system connection list
Name Identity URI
podman-machine-default* /Users/tigerroll/.ssh/podman-machine-default ssh://core@localhost:62746/run/user/1000/podman/podman.sock
podman-machine-default-root /Users/tigerroll/.ssh/podman-machine-default ssh://root@localhost:62746/run/podman/podman.sock
ここまでくれば podman info
で podman machine
のステータスを確認できるようになっている
$ podman info
host:
arch: amd64
buildahVersion: 1.22.3
cgroupControllers: []
cgroupManager: systemd
cgroupVersion: v2
...
podman machine のバージョン情報も取得できる
$ podman version
Client:
Version: 3.3.1
API Version: 3.3.1
Go Version: go1.17
Built: Tue Aug 31 04:15:26 2021
OS/Arch: darwin/amd64
Server:
Version: 3.3.1
API Version: 3.3.1
Go Version: go1.16.6
Built: Tue Aug 31 05:46:36 2021
OS/Arch: linux/amd64
podman で container を起動する
- 動作確認はおなじみ nyancat
- nyancat が見れたら動作確認 OK(停止はCTRL-C)
- 操作は docker と大差無いので馴染みやすい
$ podman run -it --rm docker.io/supertest2014/nyan

macOS に podman machie の環境を作ってみた感想
- QEMU を使うことで手軽に podman ができるのはありがたい
感謝!!
- 端末のリソースに余裕が無い場合はリモートの Fedora を用意して接続設定を変えて podman を実行させることも出来るので、その方法も試してみたいと思う
- お手軽になったので、このバージョンから本格的に podman に乗り換える人が増えそうな予感