Docker Overview¶
Docker社が開発している、コンテナ型の仮想環境を作成、配布、実行するためのプラットフォームである。 コンテナ型とは、複数のLinuxカーネル技術を用いて、起動するプロセスをコンテナという概念で扱う。 DockerはDockerイメージ及び、イメージをコンテナとして扱うDockerEngineで構成される。
DockerEngineはクライアントサーバ型のアーキテクチャでDockerクライアントがDokcerデーモン(dockerd)のAPIをコールする。 DockerEngineはイメージをもとにLinuxカーネルの機能を用いてプロセスを実行する。
Dockerイメージ¶
DockerイメージはDockerコンテナの実行に必要になるファイル群の総称で読み込み専用のテンプレートである。 イメージは、ルートファイルシステムのディレクトリ情報とコンテナ実行時のパラメータ(環境変数やポート番号)などで構成される。 仮想マシンのイメージとは異なり、アプリケーションの実行に最低限必要なファイルやパラメータのみが含まれる。
Dockerイメージはイメージレイヤの階層構造を持ち、ベースとなるイメージに加えた変更を子のイメージとして保存する。 例えば以下のようなDockerfileを実行して作成するイメージは、ベースイメージとなるcentos:latestを元に、 各行が子のイメージレイヤとして存在する形になる。
# Dockerfiel for Apache HTTP Server
FROM docker.io/centos:latest
MAINTAINER debugroom
RUN yum -y install httpd; yum clean all; systemctl enable httpd.service
Add index.html /var/www/html/index.html
EXPOSE 80
CMD ["/usr/sbin/init"]