前提
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 公式
最新版
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年か……