本記事には一部、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の「Linuxターミナル」
Protected VMはハードウェア要件があり、GoogleのPixelシリーズ以外の多くの端末では対応していません。Legion Tab 8.8では以下のエラーで起動できませんでした。
java.lang.UnsupportedOperationException: Non-protected VMs are not supported on this device.
動作確認手順(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・起動に成功します。
3. podman-composeのインストール
sudo apt install -y python3 podman-compose
podman-compose -v
# podman-composer version 1.0.3
4. 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(AVF)でpodman単体動作 | ✅ |
| Pixel 7a(AVF)でpodman-compose動作 | ✅ |
| docker-compose.ymlとの互換性 | ✅(変更不要) |
| Dockerバイナリへの依存 | なし(podman-compose採用) |
| UserLAnd(proot)での動作 | ❌ |
| AVF非対応機での動作 | ❌ |
Androidスマホでのコンテナ環境構築は、AVF対応のPixelシリーズ限定という制約はありますが、podman + podman-compose の組み合わせで 完全なDockerフリーのコンテナ環境 を実現できることを確認しました。
本記事の失敗の記録も含めることで、同じ疑問を持つ方の試行錯誤を減らせれば幸いです。



