破壊的変更と非互換性

各 Engine をリリースする度に、前のバージョンとの下位互換性を持つように努めています。全てのケースにおいて、機能を廃止するのは2つ先のバージョンというポリシーを持っており、 廃止機能 のページでドキュメント化しています。

残念ながら、Docker は非常に動いているプロジェクトであり、新しく導入した機能は変更や互換性を弱めてしまうかもしれません。このページでは各エンジンのバージョンごとに文書化しています。

Engine 1.10

1.10 のリリースにあたり、2つの破壊的変更(breaking change)があります。

Registry

Registry 2.3 はイメージのマニフェストという改良を取り込んだため、破壊的変更をもたらしました。Engine 1.10 から Registry 2.3 にイメージを送信しても、古いバージョンの Engine で digest 値を計算したものは取得できません。 docker pull を実行しても、次のようなエラーが表示されます。

Error response from daemon: unsupported schema version 2 for tag TAGNAME

Docker Content Trust は、この digest 値に強く依存しています。そのため、Engine 1.10 のコマンドラインで Registry 2.3 にイメージを送信したとしても、Docker Content Trust を有効化した古い Engine 用の CLI (バージョン 1.10 より小さい)では、イメージを取得(pull)できません。

Registry の古いバージョン(2.3 より小さい)を使っている場合は、どのエンジンの CLI を使って送受信(push、pull)しても問題ありません。ただし、Content Trust を使っていない場合に限ります。

Docker Content Trust

現在の Engine 1.10 よりも古いバージョンでは、key delegation(鍵の権限委譲)のためリポジトリからイメージを取得(pull)できません。key delegation 機能は手動で有効化する必要があります。

参考

Breaking changes and incompatibilities
https://docs.docker.com/engine/breaking_changes/