プログラミングと旅と映画の日々

普段はスマホ決済サービスの会社でバッグエンドを担当しているエンジニアです。プログラミングと趣味の映画、株、時々うどんに関してブログを書いていこうと思います。海外ドラマ、クロスバイクも好きです。

【Docker】Docker imageとは何か【入門】

Docker imageとは何か

f:id:takanori5:20181028132956p:plain

Docker imageとは

コンテナ実行に必要なファイルをまとめたファイルシステム
(ファイル例:OSのライブラリやアプリケーションなど)
imageは階層構造でデータが管理されていて
角層をレイヤーと呼ばれる
例えば、dockerイメージにnginxをインストールするイメージを実行すれば
レイヤーが一層積まれる感じ。
そして一度作成したイメージのレイヤーは全て読み取り専用で
変更不可。
f:id:takanori5:20181028134840p:plain

dockerイメージを元にコンテナを起動すると
新たに新しく読み書き可能なコンテナレイヤーが作成される
ただし、過去のレイヤーは読み取り専用。
無駄なファイルがイメージに含まれないようにイメージを作成することが重要。

イメージが大きくなると
Dockerのメリットである軽量であるということが薄れる

Dockerのイメージ継承について

以下の図のようにベースとしたいイメージを元にして
アプリレイヤーを構築できたりします。
超便利!!
f:id:takanori5:20181028135542p:plain

同じDockerイメージを継承した場合のメリット
centOSのイメージを同一にして
上位のレイヤーはRuby用、MySQL用という風にすることで
レイヤーの重複を排除でき、無駄なファイルのインストールをしなくてもよくなります。
通信料も節約できますね。
f:id:takanori5:20181028135900p:plain