スポンサーリンク

Dockerの落とし穴(環境依存しない・・・)

公式イメージは公開期限がある

公式イメージを使ったコンテナで開発をしており、しばらく経ってPCを買い替えたりしてコンテナを作ろうと公式イメージをPullしようとすると既に非推奨となって廃棄されてたりすることがあります。

公式はそれで構わないのでしょうが、現場はまだ古いものを使っていたりするのが世の常です。
正直これは詰みます。

公式イメージをカスタムしてDokerhubへPush

公式イメージをdocker-compose.ymlやDokerfileにてカスタムしたものを、自分のDockerhubへPushすることでカスタムイメージのバックアップとなり公式が非公開にしても影響を受けなくできます。

落とし穴

私の過去の開発環境は、Mac、Windows共にintel製でした。
この頃にカスタムイメージ化したので、作業したPCのアーキテクチャのみでビルドされたようです。
今回はMacがApple Silicon、WindowsがAMDに変わっています。
Windowsはまだ良いのですが、Macではアーキテクチャの差異が大きすぎてコンテナができません。
しかしWindowsでもDockerDesktopアプリにはアーキテクチャの警告アイコンが出ます。
WindowsはVMが間を取り持つので動くようですが、その分パフォーマンスが目に見えて悪いです。

このことからDockerはOSの環境依存は吸収しますが、アーキテクチャの差異は吸収できないようです。

対処

私は知りませんでしたが、マルチアーキテクチャイメージ化ができました。
公式イメージに機能追加した自分のイメージをマルチ化してDokcerhubへPushできました。

結果、Apple SiliconのMacでも問題なく動かすことができまし、Windowsの方もアーキテクチャの警告が取れました。
Windowsはパフォーマンスの改善を期待しましたが、変わらずでしたね・・・。
Macは相変わらずLinux系のコンテナとは親和性が高いので爆速です。

マルチアーキテクチャイメージ化についてはかなりの手順があったので、残念ながら私では記述できません。
AIにやってもらいました・・・。