きょうのまなび(2024/07/27)

You,4 min read

1. 本番系ではAlpine Linuxは使わない方が良さそう?

2024年版のDockerfileの考え方&書き方 (opens in a new tab)」の記事を見て、よくその場しのぎでマルチステージビルドでないDockerfileを書いたりするので、マルチステージビルドも検討した方が良さそうだなーと思いながら見ていましたが、以下のどこかで聞き覚えのある文章 (opens in a new tab)が記載されていました。

公式ドキュメントではAlpineを勧めていますが、LinuxのC言語のランタイムのDebianなどが使うglibcとAlpineのmuslを比べると実行性能が3-5割程度変わることがあります。

Alpineを選んで25MB変わったところでストレージのコストや転送時間は対して変わりませんが、CPU性能が落ちて、その分余計に処理時間が伸びて増えるコストの方が膨大なので、Debian系のベースイメージを使うべきです。

少し前に誰かがAlpine Linuxは性能が悪いので、コンテナOSはAmazon Linuxとか普通のLinuxを使って!と言っていたので、そのときは理由がうまく見つけられず、修正も楽だったので素直に変更しましたが、この記事を見てこのあたりのことを言われていたのかな?と思いました。

今、調べてみると以下のような記事もあります。

ここまで調べて公式がなんでAlpineを推しているのかは謎です、、、、🧐

その時のことを思い出してみると、当時はAmazon CorrettoのDockerイメージ (opens in a new tab)のデフォルトがAlpine Linuxだったので、Amazon Linux 2023に後から変更しましたが、 今、DockerHubを見てみるとデフォルトがAlpine LinuxからAmazon Linux 2023に変わっていました。Alpine Linux離れも起きつつある?のかなーと思いました。そういえば、最近はAlpineみないような、、、PostgresもDebianですし。 (ただAmazonなので、政治的な理由でAmazon Linuxになったのかもしれませんが、、、一概には言えなさそう。)

ただ、性能低下は困るので、今後、Dockerイメージを使う時はAlpine Linuxのイメージでないか事前にチェックする方が良さそうだなーと思いました。イメージの容量を削減するにしても、マルチステージビルドで実行環境にdistrolessを使うとかの方法も検討してみたいです。

(個人的なイメージではAmazon Linux 2023も企業サポートがあるとはいえ、ベースが永遠のREHLベータ版的なFedora Linuxなので昔の人間的には少し心配ですね、、、やっぱり、RHEL系ならRocky Linuxなのかな・・・)

※ 筆者、あまりLinuxのことは詳しくないので、間違っていたらすみません🙏

GitHubで記事を見る (opens in a new tab)

Copyright kght6123.RSS