VSCode + Dev Containers + Podman環境構築
これを書く中で、リソースフレンドリーなコンテナ開発環境構築にあたり、Docker -> Podmanが有効なのか(デーモンレスあたりの文脈)が気になり、とりあえず環境構築を行ったログ。
環境
- Windows 11
- WSL2
- Ubuntu
- VSCode
- 下記拡張機能をインストール済
- Dev Containers
- WSL
- 下記拡張機能をインストール済
- WSL2
ざっくり手順
- PodmanとPodman Desktopを入れる
- 初期Podman環境(WSL)を作る
- VSCodeの設定メンテナンス
- VSCodeで接続
- Host -> WSL
- WSL -> Container
PodmanとPodman Desktopを入れる
$ winget search podman
名前 ID バージョン 一致 ソース
------------------------------------------------------------------
Podman RedHat.Podman 4.9.1 winget
dive wagoodman.dive 0.11.0 Tag: podman winget
Podman Desktop RedHat.Podman-Desktop 1.7.0 winget
RedHat.Podman
と RedHat.Podman-Desktop
をインストールする。
$ winget install --id RedHat.Podman
$ winget install --id RedHat.Podman-Desktop
winget
でバージョン管理を噛ましたい意図でこのアプローチを行ったが、ここを読む限り、本来はGitHub上で管理の最新リリースを引っ張ってきてね、との感じだった。Podman Desktop経由でアップグレードが出来るなら、それでも良いのかな。
初期Podman環境(WSL)を作る
podman init
と podman start
相当。Windows環境であればDesktopアプリから行うのが一番簡単。
キャプチャを撮り忘れたので文言で簡単に書いちゃうと、基本は Set Up
のボタンからガイド通りにボタン押下を進めればPodman環境自体は立ち上がる。
Dockerと同じでコンテナ環境に割かれるリソース定義は .wslconfig
に沿う。
$ wsl --list
Linux 用 Windows サブシステム ディストリビューション:
Ubuntu (既定)
docker-desktop-data
docker-desktop
podman-machine-default
何も考えずにアプリをポチポチしていた場合は podman-machine-default
の名前でPodman環境が作られる。
VSCodeの設定メンテナンス
VSCodeが Dev Containers
拡張でコンテナを立ち上げる時に利用するコンテナエンジンを修正する必要がある。dev.containers.dockerPath
を podman
にして終了。
VSCodeで接続
Podmanは環境がWSLに存在する(Dockerの場合はホストから docker
コマンドを叩く感じになるが、PodmanはWSLから、との意味)ため、VSCodeでは一度WSL環境に入ってから、Dev Containers
でコンテナを作る感じになる。
Host -> WSL
-
Shift
+Ctrl
+P
- 「wsl」と入力
- 「WSL: Connect to WSL with Distro...」を押下
- 「podman-machine-default」を選択
これで対象WSL環境にアクセス成功。
WSL -> Container
ここはDockerでコンテナを立てていた時と同様な手順でOK。
-
Shift
+Ctrl
+P
- 「container」と入力
- 「Dev Containers: Open folder in Container...」を押下
Dockerを利用時に作成した Dockerfile
や compose.yml
は全て互換性があるため、コンテナ起動のためにソースリポジトリ側を直す必要は全く無し。
ちなみに、WSL上にエディタを置く方式は非推奨とのアドバイスを頂いた。ロケール設定が面倒な上、Podman環境はFedoraなのでちょっといじくるのも大変と、やるメリット自体も薄そう。
手順ログだけなので、このスクラップはこれでクローズ。