きょうのまなび(2024/07/27)
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を使って!と言っていたので、そのときは理由がうまく見つけられず、修正も楽だったので素直に変更しましたが、この記事を見てこのあたりのことを言われていたのかな?と思いました。
今、調べてみると以下のような記事もあります。
- とりあえずでDockerイメージにAlpine Linuxを選択するのはやめましょうという話 https://engineering.nifty.co.jp/blog/26586 (opens in a new tab)
ここまで調べて公式がなんで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