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のインストールのみで解決した形になります。