先日、ローカルのMySQLイメージを元にして、DockerのSwarmクラスター上にデプロイしてみた時に、以下のワーニングが表示されました。
(ワーニング(抜粋))
image mysql8.0.33-image:latest could not be accessed on a registry to record its digest. Each node will access mysql8.0.33-image:latest independently, possibly leading to different nodes running different versions of the image.
これについては、仕様上、Docker Swarmでは、サービスを複数のノードで実行する場合、各ノードが同じイメージの同じバージョンを使用するようにするために、イメージのデジェストをレジストリに記録する、という仕様になっているそうです。(これにより、異なるノード間で異なるイメージバージョンが実行されることを防ぐことができるわけです)
しかし、ワーニングによると、指定したイメージ「mysql8.0.33-image:latest」のデジェストをレジストリに記録することができなかった、ということです。(その結果、各ノードは独立してイメージにアクセスし、異なるノードで異なるイメージバージョンが実行されてしまう可能性があるらしいです)
このエラーを解決するために、次のいずれかの手順を行う予定です。
(1)イメージをレジストリにプッシュ
イメージをDockerイメージレジストリにプッシュして、各ノードがアクセスできるようにします。プライベートレジストリを使用している場合は、正しい認証情報を提供する必要があります。
(2)イメージをローカルノードにロード
各ノードにイメージをロードすることで、レジストリに依存せずに実行できます。以下のコマンドを使用してイメージをロードします。
> docker image load -i mysql8.0.33-image.tar
上記のコマンドを実行する前に、イメージファイル mysql8.0.33-image.tar
をローカルに配置しておく必要があります。
この結果については別途記事に記録する予定です。