僕が Docker の base image 選択に迷ったら見るページ


タグによく使われる scratch, busybox, alpine などの名前まとめ

scratch

何も入っていない 0 バイトの image。

Go のように全てが静的リンクされたバイナリを吐く言語ならこれで十分。 タイムゾーンの解決や HTTPS 通信すらできない 1 ので必要に応じて別のイメージから持ってくる必要がある。

busybox

BusyBox はよく使う Unix コマンドが詰め込まれた軽量なシングルバイナリ。自称 “The Swiss Army Knife of Embedded Linux”。Alpine Linux の元になっている。

Docker image として使う上での alpine との違いは package manager が無いことくらいか? Scratch でも十分だがデバッグ等でコンテナに入ってコマンドを叩きたくなることも多いので開発段階でよく使う。

alpine

Alpine Linux は軽量でシンプルでセキュアな Linux distribution。

Musl が原因で遅い (ことが多い) 2 が、シングルバイナリのアプリなら関係ない。 セキュアであることについては、インターフェイスが少なく (脆弱性になりうるものが少なく)、glibc よりセキュアな musl-libc を利用しているなら脆弱性も少なかろうという理論。

Debian のバージョン

覚えづらいのはここから

Ubuntu のバージョン