2
Help us understand the problem. What are the problem?
Organization

お手軽になった 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 infopodman 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 ができるのはありがたい :pray: 感謝!!
  • 端末のリソースに余裕が無い場合はリモートの Fedora を用意して接続設定を変えて podman を実行させることも出来るので、その方法も試してみたいと思う
  • お手軽になったので、このバージョンから本格的に podman に乗り換える人が増えそうな予感 :star2:
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?