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 composeがdocker-credential-desktopを見つけられない →PATHにDocker\resources\binを足す
どれも、本題のアプリとは関係のない「入口」の問題です。
だからこそ、知らないとアプリにたどり着く前に消耗します。
逆に、この3つさえ抜ければ後は楽になることが多いです。
エラーコードでうまくググれないときは、状況をそのままClaudeやChatGPTに貼り付けて相談するのも早いと思います。
Windowsの自己ホストで、私と同じところで足を取られる人が少なくなればうれしいです。
この記事が誰かの役に立てばうれしいです。