1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AndroidスマホでDockerフリーなコンテナ環境を作る - Podman + podman-compose 実機検証記録

1
Last updated at Posted at 2026-02-18

本記事には一部、AIにより生成された文章が含まれます。

TL;DR

  • Google Pixel(Android 16)の純正「Linuxターミナル」アプリで podman および podman-compose の動作を確認した
  • UserLAnd(proot環境)では動作しない
  • Lenovo Legion Tab 8.8では「Linuxターミナル」アプリ自体が起動しない
  • podman-compose でDockerフリーのコンテナ環境を実現できた

背景:なぜDockerフリーを目指すのか

2021年9月、Docker Desktopが企業利用(従業員250人以上 または 年間売上1,000万ドル以上)において有料化されました。2024年11月の改定後は月額$5〜$24のサブスクリプションが必要です。

この流れの中で注目したのが Podman です。Podmanは以下の特徴を持ちます。

  • Red Hat が開発し、メンテナンスする企業やOSSコミュニティ双方から信頼される後ろ盾となっている
  • root権限不要で動作する(Rootless)
  • Dockerfile、docker-compose.yml との高い互換性
  • Windows(WSL2)・macOS・Linuxで動作
  • 商用利用でも無料で使用できる

今回はさらに一歩踏み込み、「AndroidスマホでPodmanは動くのか」を実機で検証しました。

重要:podman-compose と podman compose は別物

本記事では podman-compose を使用します。先に両者の違いを整理します。

podman-compose podman compose(純正)
実装 Python製(サードパーティ) Go製(Podman本体統合)
Docker依存 なし デフォルトではあり※
インストール apt install podman-compose Podman 4.x以降に同梱
Dockerフリー 完全に実現できる デフォルトだと不可。回避可能※

※注記
厳密にはpodman compose(純正)はデフォルト設定においてdocker-compose v2バイナリへの依存がありますが、設定によってpodman-compose優先に変更できます。今回は設定を割愛するためpodman-composeコマンドで進めます。

検証環境

端末 OS 環境 結果
Google Pixel 7a Android 16 純正「Linuxターミナル」アプリ(AVF) ✅ 動作OK
Google Pixel 7a Android 16 UserLAnd Ubuntu 22.04 ❌ 動作NG
Lenovo Legion Tab 8.8 Android 16 純正「Linuxターミナル」アプリ ❌ 起動不可
Lenovo Legion Tab 8.8 Android 16 UserLAnd Ubuntu 22.04 ❌ 動作NG

なぜ環境によって結果が異なるのか

成功:Google Pixel「Linuxターミナル」(AVF)

Google Pixel(Android 8以降の一部機種)に搭載された Android Virtualization Framework(AVF) は、Protected VMと呼ばれる本物のLinux仮想マシンを起動します。prootを使わないため、Podmanが必要とするカーネルnamespaceやcgroupsが正常に機能します。

失敗:UserLAnd(proot環境)

UserLAndはprootという仕組みでLinux環境を擬似的に実現します。カーネルをAndroidと共有しているため、Podmanに必要なnamespaceが使えず、以下のエラーが発生します。

WARN[0000] "/" is not a shared mount, this could cause issues or missing mounts with rootless containers
cannot clone: Invalid argument
Error: cannot re-exec process
スクリーンショット:Legion Tab 8.8 + UserLAnd Ubuntu 22.04 でのエラー Legion Tab 8.8 + UserLAnd でpodman失敗

失敗:Legion Tab 8.8の「Linuxターミナル」

Protected VMはハードウェア要件があり、GoogleのPixelシリーズ以外の多くの端末では対応していません。Legion Tab 8.8では以下のエラーで起動できませんでした。

java.lang.UnsupportedOperationException: Non-protected VMs are not supported on this device.
スクリーンショット:Legion Tab 8.8「Linuxターミナル」起動時の修復不可能なエラー Legion Tab 8.8 Linuxターミナル起動失敗

動作確認手順(Pixel 7a + Android 16)

前提

  • Google Pixel 7a(または他のAVF対応Pixelシリーズ)
  • Android 16
  • 「Linuxターミナル」アプリ(設定 → 開発者向けオプション → Linuxターミナル から有効化)

1. podmanのインストール確認

Linuxターミナル(Debian環境)を起動後、podmanをインストールします。

sudo apt update && sudo apt install -y podman
podman --version
# podman version 4.3.1

2. podmanの単体動作確認

podman run docker.io/hello-world
# Hello from Docker!
# This message shows that your installation appears to be working correctly.

✅ arm64v8アーキテクチャでイメージのpull・起動に成功します。

スクリーンショット:Pixel 7a「Linuxターミナル」でpodman run 成功 Pixel 7a podman run hello-world 成功

3. podman-composeのインストール

sudo apt install -y python3 podman-compose
podman-compose -v
# podman-composer version 1.0.3

4. docker-compose.ymlの作成

docker-compose.yml
services:
  app:
    image: docker.io/hello-world

5. podman-composeで起動

podman-compose up
['podman', '--version', '']
using podman version: 4.3.1
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
exit code: 0

docker-compose.ymlをそのままpodman-composeで動作させることに成功しました。

スクリーンショット:Pixel 7a「Linuxターミナル」でpodman-compose up 成功 Pixel 7a podman-compose up 成功

まとめ

確認内容 結果
Pixel 7a(AVF)でpodman単体動作
Pixel 7a(AVF)でpodman-compose動作
docker-compose.ymlとの互換性 ✅(変更不要)
Dockerバイナリへの依存 なし(podman-compose採用)
UserLAnd(proot)での動作
AVF非対応機での動作

Androidスマホでのコンテナ環境構築は、AVF対応のPixelシリーズ限定という制約はありますが、podman + podman-compose の組み合わせで 完全なDockerフリーのコンテナ環境 を実現できることを確認しました。

本記事の失敗の記録も含めることで、同じ疑問を持つ方の試行錯誤を減らせれば幸いです。

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?