Docker 入門
Docker はじめの一歩
Docker とは
Docker は,アプリケーションとその実行環境をコンテナという単位でまとめ,簡単に構築・配布・実行できるようにする技術です.従来の仮想マシンとは異なり,ホスト OS 上で直接動作する軽量は仮想化技術であり,起動が早く,リソースの消費も少ないのが特徴です.
コンテナとは
コンテナは,アプリケーションとその実行に必要なライブラリや設定をひとまとめにしたパッケージです.これにより,開発環境と本番環境の違いによる「動かない問題」を防ぐことができます.研究や開発においては「環境構築の手間を減らし,同じ環境を誰にでも再現できる」ことに大きな強みがあります.
Docker の特徴
- 環境構築が容易
- 数行のコマンドで複数のサービスを組み合わせた複雑な環境を構築できる
- 軽量で高速
- 仮想マシンよりも起動が速く,コンテナは数秒で起動,リソース消費も少ないため複数同時に実行環境を立てやすい
- 移植性(再現性)が高い
- 依存ライブラリや設定を含めて「イメージ」にまとめるため,どこでも同じように動作する
- 自動化が可能
- Dockerfile や docker-compose.yml を使って環境構築をコード化できる
- 環境の共有が容易
- Dockerfile や docker-compose.yml を渡すだけで,他人が同じ環境を立ち上げられる
例えば卒業研究では次のような場面が考えられます.
- Python で開発したプログラムを,別の PC やサーバ上でも動かしたい
- Python Django と MySQL,Web サーバを組み合わせたシステムを構築したい
- 再現実験や他の研究者との共同作業で,同じ環境を素早く用意したい
仮想マシンとの違い
Docker はしばしば VMware や Virtural Box などの仮想マシン (VM: Virtual Machine) と比較されます.仮想マシンは1台の PC の上に,もう1台の PC を まるごと動かす仕組みです.例えば,Windows OS 上に別のバージョンの Windows や Ubuntu などの仮想マシンを動作させます.
一方で Docker は1台の PC の中で,アプリケーションごとに独立した環境をコンテナとして区切る仕組みです.
項目 | 仮想マシン (VMware など) | コンテナ (Docker) |
---|---|---|
仮想化の単位 | OS ごと | アプリケーション単位 |
構成 | ゲスト OS が必要 | ホスト OS 上で直接動作 |
起動速度 | 数十秒〜数分 | 数秒 |
リソース消費 | 多い(OS 分のCPU・メモリ) | 少ない(ホスト OS を共有) |
可搬性 | VM イメージのサイズが大きく移動は重い | コンテナイメージは軽量で移動が簡単 |
隔離性 | 高い(完全な OS 分離) | 中程度(プロセス単位の分離) |
主な用途 | 複数 OS の検証,本番環境の仮想化 | 開発環境・実行環境の再現,Web サービス構築 |