プログラミング

Windowsの自己ホストでDockerを入れるときに必ずぶつかる3つの壁

Windows 11にDocker DesktopとOllamaを入れたときにつまずいた3点の記録です。wingetがmsstoreの証明書エラー(0x8a15005e)で止まる、Docker Desktopのサイレントインストールが終了コード -5 で失敗する、Git Bashでdocker-credential-desktopが見つからない、の原因と回避コマンドをまとめました。

目次

はじめに

Windowsで何かを自己ホスト(自分のPCでサーバー的なものを動かすこと)しようとして、本題に入る前の環境構築でぐったりした経験はありませんか。

私もOSS版のNotebookLMをDockerで動かそうとして、アプリ本体にたどり着く前に3回も足を取られました。
しかもどれも、エラーメッセージだけ見ても原因が分かりにくい種類のものでした。
同じところでつまずく人は必ずいると思うので、Windowsでの自己ホストで最初にぶつかる3つの壁を、原因と回避策のセットで残しておきます。
コマンドはコピペで使えるようにしてあります。

この記事は、Docker DesktopとOllamaをWindows 11に導入した実際の作業記録に基づいています。

壁①:wingetがmsstoreの証明書エラーで止まる

最初の壁は、パッケージ管理の winget でした。
winget install しようとすると、

0x8a15005e

というコードで、パッケージの解決が止まってしまいます。
これは winget が、本来のwingetリポジトリではなくMicrosoft Store(msstore)側を見に行って、その証明書まわりで失敗しているときに出ます。

回避策は、ソースをwingetに明示的に固定することです。

winget install --id <パッケージID> --source winget

--source winget を付けるだけで、不調なmsstore側を回避して、wingetリポジトリから素直に取ってきてくれます。
Ollamaを入れるときに、これで抜けられました。
原因が「証明書」と言われるとネットワークやセキュリティを疑いがちですが、実体はソースの選択ミスなので、まずこれを試すのが早いです。

壁②:Docker Desktopのサイレントインストールが失敗する

次の壁はDocker Desktop本体です。
wingetの --silent(画面を出さずに自動インストール)で入れようとしたら、

インストーラーが終了コード -5 を返しました

と言われて失敗しました。
原因は、サイレント実行の途中で管理者権限の昇格(UAC)が取り消されていることでした。
サイレントだと昇格ダイアログにうまく応答できず、こけてしまうわけです。

回避策は、winget任せにせず、インストーラーを直接ダウンロードして、管理者として明示的にサイレント実行することです。

Start-Process -Verb RunAs -FilePath ".\Docker Desktop Installer.exe" `
  -ArgumentList "install","--quiet","--accept-license","--backend=wsl-2"

-Verb RunAs で確実に管理者として起動し、--backend=wsl-2 でWSL2バックエンドを指定しています。
私の環境ではWSL2(Ubuntu)が既に入っていたので、インストール後のデーモン(Dockerの常駐プロセス)は数秒で立ち上がりました。
Docker DesktopはWSL2が前提なので、もしWSL2が無ければ先に wsl --install で入れておくとスムーズです。

壁③:docker composeが認証ヘルパーを見つけられない

3つ目は、いざ docker compose を動かそうとしたときです。
Git Bashから実行すると、

docker-credential-desktop ... not found

と言われて止まりました。
docker-credential-desktop は、Dockerが認証情報を安全に保管するための補助プログラムです。
これ自体はインストールされているのに、Git Bashの PATH(実行ファイルを探す経路)に、Dockerのbinフォルダが入っていないために見つけられていませんでした。

回避策は、PATH にDockerのbinフォルダを足すだけです。

export PATH="/c/Program Files/Docker/Docker/resources/bin:$PATH"

これで docker-credential-desktop が見つかり、docker compose up -d が通るようになります。
PowerShellやWindows標準のコマンドプロンプトでは問題なく動くのに、Git Bashだけでこける、という形で出やすいので、シェルを変えたら急に動いた/動かなくなった、というときは PATH を疑うといいです。

まとめ

いかがでしたか。
今回は、Windowsで自己ホストを始めるときに最初にぶつかる3つの壁を、原因と回避策のセットでまとめました。
振り返ると、

  • winget がmsstoreの証明書エラーで止まる → --source winget でソースを固定する
  • Docker Desktopのサイレントが終了コード -5で失敗する → インストーラを直接ダウンロードし、管理者で install --quiet --accept-license --backend=wsl-2
  • docker composedocker-credential-desktop を見つけられない → PATHDocker\resources\bin を足す

どれも、本題のアプリとは関係のない「入口」の問題です。
だからこそ、知らないとアプリにたどり着く前に消耗します。
逆に、この3つさえ抜ければ後は楽になることが多いです。
エラーコードでうまくググれないときは、状況をそのままClaudeやChatGPTに貼り付けて相談するのも早いと思います。

Windowsの自己ホストで、私と同じところで足を取られる人が少なくなればうれしいです。

この記事が誰かの役に立てばうれしいです。