Dockerhubにあるalpine, buster, slimってなんのこと?
背景
Rubyのアップデートを行う際にDockerhubに訪れたところ、バージョンの横に"alpine, slim, buster"などと書かれているのを目にしました。
それらのちゃんとした違いをわかってなかったので、調べました。
調べてみた
まとまってそうな記事を見つけました!
ざっくりと和訳してみますと、
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を選ぶことが多そうですね〜
- RailsのDockerイメージを一番小さくする方法 - Qiita
- Docker イメージサイズを抑えながら Ruby on Rails + PostgreSQL の開発環境を作成する - bitA Tech Blog
おわりに
という理解をしました。
追加調査にあるような、選び方やイメージ作成もちゃんとやってみないとな〜