Docker, 仮想環境

Dockerでalpine linuxを使うときの軽量化設定

ソースからビルドしなければならないパッケージがある時は、先にビルド用のコンパイラやXXX-dev系のパッケージを入れなければならない。しかしこれらをインストールしたままにするとイメージサイズが肥大化し、せっかくalpineで軽量イメージを作る意味があまりなくなってしまう。

だからビルド時にのみ必要なツールはビルド後に削除したい。それをやりやすくするコマンドが用意されている。
基本的には、Alpine Linux で軽量な Docker イメージを作るを参考にして書く。要点は

RUN apk --no-cache --virtual .build-deps build-base xxxx yyyy zzzz && \
    色々ビルドする && \
    apk del --purge .build-deps

と書けば良い。これで、build-base xxxx yyyy zzzzを全てビルド後に削除してくれる。--purgeをつけているから一緒にインストールされた関連パッケージも削除される。

apk updateがいらなくなってapk --no-cacheで良い、と書かれていたところの意味がわからなかったからもう少し調べると、
Alpine Dockerfile Advantages of –no-cache Vs. rm /var/cache/apk/*というstackoverflowの質問を見つけた。
回答に、

The –no-cache option allows to not cache the index locally, which is useful for keeping containers small.
Literally it equals apk update in the beginning and rm -rf /var/cache/apk/* in the end.

と書いてあった。これでようやく意味がわかった。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です