Windows11上Podman(WSL2)に対してVSCodeのDocker拡張でInvalid Jsonが出てしまう
当サイトではアフィリエイト広告を利用しています
Windows11のWSL2において導入したPodmanですが、VSCodeのDocker拡張を利用した際にInvalid JSONと表示されてしまいます。
Docker CLIを導入してPodmanによるAPI Forwardingで対応させることにします。
環境
以下の記事でWindow11上のWSL2にPodmanを導入しています。
Distroはpodman machine init
で導入したpodman-machine-defaultになっています。
利用環境のバージョンは次のようになっています。
- Podman: 4.5.1
- VSCode: 1.80.1
- VSCode Docker Plugin: 1.26.0
VSCodeでのエラー
VSCodeでMicrosoftにより提供されているDocker拡張を利用します。この際、Docker Pathをpodmanに設定することでPodmanでも利用可能となっているようなのですが、Invalid Jsonとエラーが出てしまいます。
Github Issueによる以前にVSCodeのDocker拡張でPodmanにも対応させる修正が行われたようですが、再度Podman側の戻り値が変わってしまったのか現時点ではエラーが出ているようです。
そのため、PodmanのAPI Forwarding機能を使ってDockerとして扱えるようにしてみます。
API forwardingの利用
PodmanにはAPI Forwardingという機能があり、dockerコマンドを実行した際にPodmanへ受け渡すことが出来るようです。この動作にはdocker API Clientが別途必要になるようです。
WindowsであればDocker CLIを導入すればよさそうですが、Dockerの代わりにPodmanを導入したのにDockerも必要となる本末転倒感が出てしまってますが諦めます。
API Forwardingを利用しつつDocker拡張かPodmanにて修正が行われるのを待つことにします。
Docker CLIのインストール
wingetで探してみるとDockerCLIが提供されています。
有償などの制限があるのはDocker Desktopの方なのでこちらは制限あまりないと考えてよいのでしょうか。
> winget show Docker.DockerCLI
見つかりました Docker CLI [Docker.DockerCLI]
バージョン: 24.0.2
公開元: Docker Inc.
説明: Docker CLI & Docker Engine for Windows containers. Docker is an open platform for developing, shipping, and running applications.
ライセンス: Apache-2.0
インストーラー:
インストーラーの種類: portable (zip)
インストーラーの URL: https://download.docker.com/win/static/stable/x86_64/docker-24.0.2.zip
インストーラーの SHA256: 6e7a25813f0ad89bcd4cfb8e2797819f438761bfad34df31e027e1572e865598
こちらのインストールは管理者権限が不要でバイナリがDLされてパスを通すだけの単純なものになっています。
インストール後にDockerのバックエンドを確かめてみるとPodmanが動作していることが分かります。
# 管理者権限不要
$ wiget install -e --id Docker.DockerCLI
$ docker.exe version --format '{{(index .Server.Components 0).Name}}'
Podman Engine
こうすることで、VSCodeでのDocker拡張もバックエンドはPodman、I/FはDockerとする形で正常に動作させることができるようになりました。
なお、docker.exeのパスはC:\Users\username\AppData\Local\Microsoft\WinGet\Packages\Docker.DockerCLI_Microsoft.Winget.Source_xxxxxxxx\docker
のように配置されているので、パスの反映には再起動しておきます。再起動後にVSCodeでdocker.exeが認識されるようになります。
Podmanインストール時にDOCKER_HOST
の環境変数が設定されていることもあり、docker CLIのインストールのみで解決した形になります。