Baby step - 思考と実験の足跡

日常のちょっとした、気になって試したこと集です。

Dockerhubにあるalpine, buster, slimってなんのこと?

背景

Rubyのアップデートを行う際にDockerhubに訪れたところ、バージョンの横に"alpine, slim, buster"などと書かれているのを目にしました。

cf. ruby - Docker Hub

それらのちゃんとした違いをわかってなかったので、調べました。

調べてみた

まとまってそうな記事を見つけました!

cf. Alpine, Slim, Stretch, Buster, Jessie, Bullseye — What are the Differences in Docker Images? | by Julie Perilla Garcia | The Startup | Medium

ざっくりと和訳してみますと、

stretch/buster/jessie

  • Debianのリリースコードネーム
  • stretchは10系、busterは9系、jessieは8系

現状の最新は10系だが、コードネームは13系まで用意されているようです。

cf. DebianReleases - Debian Wiki

slim

  • 実行に最小限必要なパッケージだけインストールする
  • インストールするツールを減らすことでイメージの容量が減る
  • 原因不明のエラーが起きた場合は、フルバージョンのイメージを使うこと

alpine

  • コンテナ内の使用に特化したAlpineLinuxをベースにしたイメージ
  • 軽量で人気があるが、デバッグが難しい互換性の問題を含む
  • 軽量な分必要なパッケージはインストールする必要がある

なお、alpineがどの程度軽量か、はこちらにまとまっていました。 約4MBは軽い。。

cf. Docker に載せるOSのサイズ比較(更新中) - Qiita

以降は興味本位で追加調査。

選び方

違いはわかったもののなにをどう選ぶと良いか・・・をわかりやすくまとめている先人がいらっしゃいました。

cf. Dockerベースイメージの特徴と比較・選び方 - Qiita

Ruby on Railsの場合は?

Railsではどのイメージを選べばいいのか...だけでなく、イメージサイズを小さくするノウハウが紹介されていました。 alpineを選ぶことが多そうですね〜

おわりに

  • busterなどはDebianのコードネーム(バージョン)
  • slimはDebian系のを軽量化したもの
  • alpineはalpineLinuxのこと

という理解をしました。

追加調査にあるような、選び方やイメージ作成もちゃんとやってみないとな〜