dockerチュートリアル4:imageを小さくするコツ,データの扱い等
https://docs.docker.com/develop/dev-best-practices/
imageを小さく保つ方法
- base Imageはユースケースに近いものを選ぶ
- multistage buildを使う
- RUNコマンドの数を最小限にし、image layerの数を減らす
- runごとになにかオーバーヘッドのようなものがある?
- なるべく
&&
などで連結し、ワンライナーのコマンドにすべき- 例:一行ずつ
RUN apt-get
を書くのではなくRUN apt-get -y update && apt-get install -y python
と書く。
- 例:一行ずつ
- なるべく
- runごとになにかオーバーヘッドのようなものがある?
- 複数のコンテナを作る場合、共通化できるものをベースイメージとして用意する
- FROM~でベースイメージをロードする
- 例:production imageをベースにdebug imageを作る
- タグを有効活用する
- 自動で作成されるlatestを使うのではなく目的に合わせたタグを使う(prod,test等)
- imageのサイズとは関係ないような???
- 自動で作成されるlatestを使うのではなく目的に合わせたタグを使う(prod,test等)
アプリケーションのデータをどう扱うか
- storage deriver,volume,bind mountという3つの選択肢がある
- アプリの永続データとしてはvolume機能が推奨
- storage driver経由の書き込み可能レイヤーへの保存は非推奨
- バインドマウントは開発中の利用が効果的である
- 本番では利用を最小限に留めるべき?な感じがした(弊社エンジニアなどとの雑談から受けた印象)
- storage deriver,volume,bind mountという3つの選択肢がある