dockerimages

Dockerイメージとは?【Docker解説】

Dockerイメージとは

Dockerイメージとは、Dockerコンテナを作成する際に必要となるファイルシステムです。

DockerコンテナはDockerイメージを元に作成されます。

イメージには以下のような特徴があります。

  • 読み込み専用である(Read Only)
  • イメージレイヤ(層)の積み重ねで出来ている

Dockerイメージはファイルシステムとアプリケーションやミドルウェア、実行時に必要とするパラメータから構成されます。

ファイルシステムとはシステムを動作させるのに最低限必要なファイル群であり、ルート以下のディレクトリのことです。

パラメータとはDockerイメージから作成したコンテナ実行時に行いたいコマンド等が該当します。

Dockerが一般的な仮想マシンに比べて軽量であるというのはこの構成が理由です。

通常の仮想マシンイメージであれば、Linuxカーネルやファイルシステムまたは空き容量などの仮想ディスク容量も必要とするため、数GBの容量になってしまいますが、Dockerは以上の最低限の要素しか必要としないためLinuxディストリビューションのAlpine Linuxなどは4MBしか必要としません。

また、読み込み専用であるため改ざんの恐れがなく、チーム開発等で環境を統一したい時にも容易にイメージを共有することが出来ます。

 

イメージレイヤ

Dockerイメージにはレイヤ(層)の概念があり、いくつものレイヤが重なって1つのDockerイメージご構築しています

image-layers

一番下のレイヤがベースイメージと呼ばれる一番上の親にあたるイメージレイヤです。これが基本となるイメージレイヤであり、Docker Hubにある公式のLinuxディストリビューションなどがよく用いられます。もちろん自分で作成することも可能です。

上の画像ではUbuntu 15.04イメージですが、例えばこのUbuntuに何らかのファイルを追加したいといった変更があった場合に、子のイメージレイヤが重ねられていくことになります。

Dockerfileの1行が1つのイメージレイヤです。

実際にはこうしていくつものレイヤが重ねられて構成されるDockerイメージですが、Linuxホスト上ではユニオンファイルシステムという仮想的なファイルシステムを形成する機能を用いてこれらの別々のディレクトリを1つにまとめて見えるようにしています。

一般的にDockerイメージといえば1番上のイメージレイヤであり、このイメージレイヤのIDがDockerイメージのIDとなります。

イメージの実行時などには、指定されたイメージレイヤに依存関係のある親のイメージレイヤも対象となります。

ローカルに保存されているイメージ一覧はdocker imagesで確認できます。

コマンドに関しては以下が詳しいです。

docker container / image コマンド新旧比較

初心者こそDockerを使ってみよう【入門】