小さい Docker イメージを作るためには、 Alpine Linux をベースにすると良いという事なので、 自分で作るイメージだけでなく、他人のイメージも Alpine Linux をベースにしている物が多くなってきました。
ところが、Alpine Linux の apk パッケージは普段使っている Ubuntu, Debian 等のパッケージと違って、 よく使うファイルやコマンドがどのパッケージに入っているかイマイチ分かり難いです。
そこで、車輪の再発明とはなりますが、ファイル名(の一部)を指定して、パッケージを検索する Docker イメージを 作ってみました。
https://hub.docker.com/r/okadahiroshi/apk-files/
使い方は簡単でコマンドラインで、
$ docker run --rm -it okadahiroshi/apk-files 探したいファイル名(の一部)
と入力するだけです。
中の仕組みなど
中の仕組みは簡単で
apk update
でキャッシュにapkファイルの一覧が入るのでそれを取り出す。- 一覧のそれぞれに
apk fetch
で apk ファイルを取得してtar tzf
でファイル一覧を取り出す。(取り出したあとは apk ファイルを削除) docker run
時にgrep -F
で検索して出力する。
という仕組みです。実際は build 時間を少なくするため、2 は 5スクリプトを並列で走らせています。
なお、手元の環境だと build に一時間くらいかかります。マシンのスペックにあんまり関係ないようです。 dockerhub での build は 25分ほどで終了するので、ネットワーク速度等が律速要因だと思います。