Help us understand the problem. What is going on with this article?

Docker Desktop for Windowsでschema v1 manifestを見分ける

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が使えるようになった :tada:

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にチェックを入れている。

image.png

Dockerイメージがうまく動かない現象

DockerHubにある MariaDBv10.0.17v10.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を使えるようにしておく。

image.png

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も元気に動く。

v2okimochi
_人人人人人人人人_           >         <           > お き も ち <           >         <            ̄Y^Y^Y^Y^Y^Y^Y^ ̄           
opt
"INNOVATION AGENCY" を標榜するインターネット広告代理店。エンジニア組織 "Opt Techonologies" を中心にアドテクetc...に取り組んでいます。
https://opt-technologies.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした