環境
- OS:Windows 10 Pro
- Docker Version
- Docker Desktop:4.16.3
- Docker Engine:20.10.22
- Docker Compose:v2.15.1
参考記事
事象
docker compose up
を実行したときに「Docker endpoint for "default" not found」が出力される
[実行コマンド]
> docker compose up
[出力結果]
Docker endpoint for "default" not found
「Docker endpoint for "default" not found」を直訳すると「「デフォルト」の Docker エンドポイントが見つかりません」らしい。
ちょっと調べてみる
[実行コマンド]
> docker context ls
[出力結果]
unexpected end of JSON input
「unexpected end of JSON input」を直訳すると、「JSON 入力の予期しない終了」になる(jsonファイルでバグがある感じ?)
- コマンドリファレンスから
docker context
でできることを調査し、docker context inspect
が使えそうだったので、とりあえず出力結果を確認
[実行コマンド]
> docker context inspect
[出力結果]
[
{
"Name": "default",
"Metadata": {
"StackOrchestrator": "swarm"
},
"Endpoints": {
"docker": {
"Host": "npipe:////./pipe/docker_engine",
"SkipTLSVerify": false
}
},
"TLSMaterial": {},
"Storage": {
"MetadataPath": "\u003cIN MEMORY\u003e",
"TLSPath": "\u003cIN MEMORY\u003e"
}
}
]
ある程度調査した上で参考記事から以下の対策を見つけたが納得できなかった。。
① .dockerディレクトリを削除
② meta.jsonを削除
事象は違うが、docker context ls
を実行した際にjsonがおかしいと言ってたので、一旦バックアップを取ってからmeta.jsonを削除すると起動できた。納得いかない。。(なぜ削除するだけでうまくいく?しかも再起動後に新しくファイルが作成されるわけでもない。)
meta.jsonに何かしらを追加することによって解決している人が居るっぽい
docker context inspect
の実行結果をmeta.jsonに追加して実行
解決方法として挙げている内容がdocker context inspect
の出力結果と同じような形式だったので、docker context inspect
の[]
を除いた出力結果をmeta.jsonに貼り付けて実行してみるといけた。
元々meta.jsonにエンドポイントの設定が記載されていたが、バージョンアップなどの影響でmeta.jsonの中身が消えた路線の可能性が高いかと思うので、docker context inspect
の出力結果をmeta.jsonに張り付ける対応で完了とします。