APK is 何?
apk = Alpine Linux package management
Alpine Linuxのパッケージ管理システム
パッケージって何?
Linuxが採用しているアプリケーションの配布形態。アプリケーションによっては、正常に動作させるためには「ライブラリ」と呼ぶ別のプログラムを必要とすることがある。パッケージは、こうした動作に必要な各種プログラムやファイルをまとめたものである
Alpine Linux に標準でインストールできるパッケージ
ここで調べられる
主なコマンド
apk update
利用可能パッケージのインデックスを更新
- これを実行しても、インストールされたパッケージは更新されない
- これから取ってくるパッケージの参照先を最新にする
- Docker で使う場合、最初の方に書く
apk upgrade
現在インストールされているパッケージをアップグレード
- 別のパッケージ管理システムの話ではあるが、 Docker ではなるべく使わずに、親 image に upgrade を依頼することを推奨している
親イメージの「必須」パッケージの多くは、権限のないコンテナ内ではアップグレードできないため、apt-get アップグレードや dist-upgrade を実行しないようにしてください。
apk add ${パッケージ名}
パッケージの追加
apk add curl gcc
のように複数指定も可能
以下で各種オプションの解説をする
--no-cache
パッケージをキャッシュしなくするオプション
通常、ダウンロードされたパッケージは /var/cache/apk
にキャッシュされる
DockerでImageサイズを削減するために RUN rm -rf /var/cache/apk
とかしなくて良いので便利
--update-cache
apk update
を実行するオプション
-U
も同義
最初に、apk update
を実行してるならば不要
- 古いweb記事を見ると
--update
オプションを使用していることがあるが、公式ドキュメントの間違いらしい
--virtual ${名前}
インストールした複数のパッケージと依存関係を一つの仮想パッケージとして 名前
で保存
これを使うことで、--virtual
で名前をつけたパッケージをまとめて削除できる
Dockerで bundle install するときだけ使うパッケージ(gccとか)を、これを使ってインストール後にまとめて削除することで、imageサイズを削減できる
apk del
パッケージの削除
--virtual
apk add --virtual
で追加した仮想パッケージを削除
--purge
関連ファイルも削除してくれるらしい
参考
👇 公式の解説ドキュメント