Podmanのメモリ不足でVSCode上でNodeが動作せずハマった話

This image is generated with Microsoft Designer, and edited by the author.
作成日:2025年03月26日(水) 00:00
最終更新日:2025年03月28日(金) 09:04
カテゴリ:その他
タグ:  Podman Docker 環境構築 Tips トラブル解決

Podman に VSCode CLI を入れてリモート接続という構成の開発環境を試してみたところ,メモリ不足で Node が動作しませんでした.

こんにちは.高山です.
普段は開発環境として,Docker という仮想環境に VSCode の CLI版を入れてリモート接続,という構成をよく使います.
今回気まぐれに Docker を Podman という類似の仮想環境に切り替えてみたのですが,VSCode 上のターミナルから Node を動かそうとすると,上手く動かないという症状が出てしまいました.

結論としては,Podman のコンテナに割り当てているメモリが足らないことが原因だったのですが,原因を特定するのに苦労しました.
今後同じようなことが起きたときのためのメモとして,解決までの手順を書き残しておこうと思います.

1. 環境

  • ホストOS: macOS SEquoia 15.3.2 (MacBook Air, 13インチ, M4, 2025)
  • Podman: 5.4.1
  • Linuxイメージ: RockyLinux 9.3.20231119

2. 起きた現象

まずどのような手順で現象が起きたかを説明します.

最初に,下記のように Podman 上で Linux コンテナを立ち上げます.

$ podman run -it --rm image_name bash -l

次に,VSCode CLI を立ち上げホストから接続します.

$ code tunnel

最後に,VSCode のターミナルから次のコマンドで NextJS ベースの Webアプリをビルドすると,処理が矯正終了されてしまいました.

$ npm run build

> my_web_app@0.1 build
> next build

    Next.js 15.2.4

   Creating an optimized production build ...
   Using tsconfig file: tsconfig.json
  Compiled successfully
   Linting and checking validity of types  .

Killed

VSCode ではなく通常の Shell から npm run build した場合は正常にビルドが通ります.

$ npm run build

> my_web_app@0.1 build
> next build

    Next.js 15.2.4

   Creating an optimized production build ...
   Using tsconfig file: tsconfig.json
  Compiled successfully
   Linting and checking validity of types  .

...

  Linting and checking validity of types
  Collecting page data
  Generating static pages
  Collecting build traces
  Finalizing page optimization

...

○  (Static)  prerendered as static content

3. 原因と解決策

原因自体は非常に単純で,Podman に割り当てられているメモリ容量が少なく,Node が処理途中で落ちてしまっていました.

Podman では Linuxイメージを作成する前に,下記のコマンドで仮想マシンを作成します.

$ podman machine init

このとき,デフォルト設定では仮想マシンには 2GiB しか割り当てられません.

$ podman machine list
NAME                     VM TYPE     CREATED             LAST UP            CPUS        MEMORY      DISK SIZE
podman-machine-default*  applehv     About a minute ago  Currently running  5           2GiB        100GiB

コンテナに割り当てられるメモリサイズは,仮想マシンのメモリサイズが上限となるため,VSCode を立ち上げながらビルド処理をするにはメモリ不足になっていました.

この状態を回避するには,Podman で仮想マシンを作成する際に,メモリ容量を増やす必要があります.

$ podman machine init --memory 8192

上の例では,8GiB のメモリを割り当てています.

$ podman machine list
NAME                     VM TYPE     CREATED       LAST UP            CPUS        MEMORY      DISK SIZE
podman-machine-default*  applehv     25 hours ago  Currently running  5           8.002GiB    100GiB

メモリ容量を増やして再度試してみたところ,VSCode のターミナル上からでも npm run build が通るようになりました.


如何でしたでしょうか?
原因は分かってしまえば単純な話ですが,npm run dev で NextJS の開発サーバを立ち上げた場合は,メッセージも無く唐突に落ちてしまうので原因を探すのに苦労しました.
同じような現象でお困りの方がいましたら,少しでも参考になれば幸いです.