LoginSignup
2
1

Docker Desktop で Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default

Last updated at Posted at 2024-04-29

前提

Docker Desktop for Mac
Mac Book Pro M1MAX

経緯

プロジェクトBの docker image build を繰り返していたら、容量不足でエラーになった。
未使用のイメージ等を一気に削除したら、プロジェクトAのイメージも当然 削除された。
プロジェクトAの docker compose up -d をかけたらイメージの構築からスタートし、
エラーが出た。

エラーになったのは MySQL5.5.41のイメージ (2015年11月14日)

Docker Desktop 公式

Docker Desktop

最新版

Version 4.29.0
Docker version 26.0.0, build 2ae903e

エラー

[DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2,
 schema 1 support is disabled by default and will be removed in an upcoming release.
Suggest the author of docker.io/library/mysql:5.5.41 to upgrade the image to
 the OCI Format or Docker Image manifest v2, schema 2.
More information at https://docs.docker.com/go/deprecated-image-specs/

「イメージv1 と イメージ v2.1(意訳) は無効になりました。イメージ作成者に v2.2 にイメージフォーマットをアップグレードするように提案してください」 的なことが書いてあるようです。
オプションとかで回避とかそういう話ではない模様。

バージョンダウンの方法

こちらを参照。

Docker for Macの旧バージョンをインストールする

起動しているコンテナを停止し、Docker Desktopをシャットダウン。
ダウンロードしたイメージを展開してインストール。Docker Desktop を起動。
そして docker compose up -d

どこまでバージョンダウンすれば動くのか調べた

Version Date Result
4.24.0 2023-09-28
4.25.0 2023-10-26
4.28.0 2024-02-26
4.29.0 2024-04-08

4.24.0 に「Implemented pulling legacy schema1 images.」と記述があり、この次のバージョンから利用不可になったのかな?と思いましたが、実際には2024年4月現在の最新版「4.29.0」の一つ前の「4.28.0」で動作しました。

どのMySQLバージョンから動くか調べた

MySQL5.5系は動かない、MySQL5.6系は動くとかかと思ったが、
リリース時期が2016年3月以前は動かない、2016年5月以降は動く、という感じらしい。

Result は、 docker manifest inspect mysql:x.y.z でJSONが返ってきたら⭕、返って来なかったら❌。
Docker は、そのバージョンのイメージを指定してビルドができれば⭕、エラーが出たら❌。
docker manifest inspect の結果と、Docker Desktopで利用できるかどうかは一致するようだ。

Version ReleaseDate digest Result Docker
5.5.41 2014-11-28
5.5.46
5.5.49 2016-02-26
5.5.50 2016-05-16 385c5c57
5.5.51 51ae120c
5.5.62 2018-08-20 c9c671d0
5.5 c9c671d0
5.6.17
5.6.30 2016-03-04
5.6.31 2016-05-16 01bbb21c
5.6.51 2021-01-05 897086d0
5.6 897086d0
5.7.12 2016-03-29
5.7.13 2016-05-25 1195b21c
5.7.44 2023-09-21 dab0a802
5.7 b46f7aa9
5 b46f7aa9

回避法・1

DOCKER_ENABLE_DEPRECATED_PULL_SCHEMA_1_IMAGE を空でない値に設定すると回避できるそうですが、次のバージョンでこの設定はなくなるそうです :D~

回避法・2

docker pull する
docker push する

自動的にschema2になる模様。

メモ

compose.yaml はいつから?

compose.yaml(yml)が使われるようになったのは、Docker Compose v1.28.6 2021/03/23 から。

  • Miscellaneous
    • Add compose.yml and compose.yaml to default filename list

2021年3月からなんですね。もう3年か……

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1