近年のアプリケーション開発では
コンテナ技術が広く利用されています。
例えば次のような環境です。
- 開発環境
- テスト環境
- 本番環境
従来のサーバー構築では、環境ごとに設定が異なり
「自分の環境では動くのに本番では動かない」という問題が発生することがありました。
このような問題を解決する仕組みが
コンテナ技術です。
その代表的なツールが
Dockerです。
この記事では次の内容を解説します。
- コンテナの基本概念
- Dockerの基本概念
- Dockerイメージの仕組み
- Dockerfileとイメージの関係
① コンテナの基本概念
コンテナとは
アプリケーションを実行するための軽量な実行環境です。
■ 従来の仮想化技術(VM)
物理サーバー
↓
ハイパーバイザー
↓
VM
↓
OS
↓
アプリ
■コンテナ
物理サーバー
↓
OS
↓
コンテナエンジン
↓
コンテナ
↓
アプリ
コンテナの特徴
- 軽量
- 高速起動
- 環境の再現性
そのため
マイクロサービスやクラウド環境で多く利用されています。
② Dockerの基本概念
Dockerとは
コンテナを作成・管理するためのプラットフォームです。
Dockerを利用することで
- コンテナ作成
- コンテナ実行
- コンテナ管理
を簡単に行うことができます。
■Dockerの基本構成
Docker Client
↓
Docker Engine
↓
コンテナ
またDockerを利用するには
Docker Desktopをインストールします。
Docker Desktopは
- Docker Engine
- Docker CLI
- Docker GUI
などをまとめて提供するツールです。
③ DockerイメージとDockerfile
Dockerイメージ
Dockerイメージとは
コンテナを作成するための設計図です。
イメージには
- OS
- ミドルウェア
- アプリケーション
などが含まれています。
Dockerイメージ
↓
コンテナ作成
Docker Hubとプライベートリポジトリ
Dockerイメージは
リポジトリに保存されます。
代表的なリポジトリ
| 種類 | 説明 |
|---|---|
| Docker Hub | 公開イメージ |
| プライベートリポジトリ | 企業専用イメージ |
イメージ例
nginx
mysql
redis
Dockerfile
Dockerfileとは
Dockerイメージを作成するための設定ファイルです。
例
FROM nginx
COPY index.html /usr/share/nginx/html
■Dockerfileとイメージの関係
Dockerfile
↓
docker build
↓
Dockerイメージ
↓
docker run
↓
コンテナ
このような流れで
コンテナが作成されます。
④ まとめ
Dockerは
コンテナを作成・管理するためのプラットフォームです。
主なポイントは次の通りです。
コンテナはアプリ実行環境
Dockerはコンテナ管理ツール
Dockerイメージはコンテナの設計図
Dockerfileでイメージを作成する
Docker Hubでイメージ共有できる
Dockerを利用することで
環境差異のないアプリケーション実行環境を構築できます。