Dockerバージョン
執筆時点では、Docker Desktop for Windowsの Edge Release
(stableではないほう)にある Docker Desktop Community 2.3.0.0を使っている。
※ 2.2.2.0の時点でWindows10 HomeでもDocker Desktop for Windowsが使えるようになった
Windows 10 Home users can now use Docker Desktop through the experimental WSL 2 support. This requires Windows Insider Preview Build 19018 or later.
Windows10側はInsider Previewのビルド19041。
ちゃんとWSL2からDockerを使えるように、Docker Desktop for Windowsの設定でResources WSL Integrationでは Enable integration with additional distros
にチェックを入れている。
Dockerイメージがうまく動かない現象
DockerHubにある MariaDBの v10.0.17
と v10.2.15
を使っていたが、どうも v10.0.17
だけ挙動がおかしかった。ポート番号が割り当てられず、ログも吐かずにエラー状態となっている。
Volume, Imageを削除してDuckerHubからpullし直してみたが、変わらず。
schema v1 manifest形式のイメージが怪しそう
イメージをpullした際に、こんなメッセージがコンソールに表示されていた。
Image docker.io/library/mariadb:10.0.17 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
「もう古いschema1 manifest formatを使っているからschema2にアップグレードしてくれ」と言われているように見える。
そう言われましても。。。 (Insider Previewする前に使っていたDocker Desktop v2.2.2だと元気に動いていた)
manifestについての公式ドキュメントもちらと見たが、謎 (原因は v1だから
だとは思うが。。。)
cf. https://docs.docker.com/registry/spec/manifest-v2-2/
ひとまず苦肉の策で、既にschema v2で書かれているMariaDBバージョンを使うことにした (たとえばv10.2.15は動くので)。
意図しないバージョンアップなので、既存のv10.0.17に一番近いバージョンにしたい。
しかし毎回イメージをpullして確認するのはしんどい。
v2 formatをDocker CLIから見分けて選ぶ
pullしなくても見分けられそう。
Docker Desktop for Windowsの設定からCommand Line > Enable experimental features
にチェックを入れ、CLIを使えるようにしておく。
docker manifestコマンドにinspectというコマンドがあり、manifest情報を調べられる。
cf. https://docs.docker.com/engine/reference/commandline/manifest/#manifest-inspect
schema v1のmanifestは そもそも調べられずエラーを吐く
という反応を利用して、MariaDBのv10.0.19~v10.0.38を調べていった (やり口が汚い)
schema v1の場合はこう。サポートされていない、とエラーを吐く。
> docker manifest inspect mariadb:10.0.24
unsupported manifest media type and no default available: application/vnd.docker.distribution.manifest.v1+prettyjws
schema v2の場合はこう。ちゃんと結果が返る。
> docker manifest inspect mariadb:10.0.25
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/octet-stream",
"size": 7222,
"digest": "sha256:bb3fc12095a70be54f3eb873e6770e9b396e3149a91af863cfaa669c851ca171"
},
"layers": [
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 51352535,
"digest": "sha256:5c90d4a2d1a8dfffd05ff2dd659923f0ca2d843b5e45d030e17abbcd06a11b5b"
},
... (長いので省略)
{
"mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
"size": 120,
"digest": "sha256:87e0c87d0ef1531bce04835a47418a657ee1692e1ab163cb7a49027fa6806734"
}
]
}
どうやらschema v2形式のイメージはv10.0.25以降のようだった。Dockerも元気に動く。