Docker(ドッカー)とは、アプリケーションをコンテナと呼ばれる軽量な入れ物に詰めて動かすためのソフトウェアです。アプリ本体だけでなく、動作に必要な設定やライブラリまでひとまとめにするため、「自分のパソコンでは動いたのに、サーバーでは動かない」といった環境の違いによるトラブルを防げます。
現実世界でいえば、物流で使われる輸送用コンテナのようなものです。中身が家具でも食品でも、規格化されたコンテナに詰めてしまえば、船でもトラックでも同じように運べます。Dockerも同じで、アプリをコンテナに詰めれば、開発者のパソコンでも本番サーバーでもクラウドでも、同じように動かせます。
Dockerの仕組み
Dockerでは、まずアプリと実行環境一式をまとめたイメージという型を作ります。イメージは「コンテナの設計図」にあたるもので、これをもとに実際に動くコンテナを起動します。イメージはDocker Hubなどの共有サービスで配布されており、世界中の人が作ったイメージを取得して、コマンド1つで同じ環境を再現できます。
仮想マシンとの違い
環境をまるごと用意する技術としては仮想マシンが有名ですが、Dockerのコンテナはより軽量です。
| 種類 | 特徴 | ひとことで言うと |
|---|---|---|
| 仮想マシン | OSまるごと(ゲストOS)を仮想的に動かす。分離性が高いが、起動が遅く容量も大きい。 | 建物の中の貸し部屋 |
| Docker (コンテナ) |
OSの中核部分は共有し、アプリに必要な部分だけを区切る。軽量で起動が数秒と速い。 | 規格化された輸送コンテナ |
Dockerのメリット
Dockerは開発の現場で広く使われており、次のような利点があります。
- どこでも同じように動く
環境ごとコンテナに詰めるため、開発環境と本番環境の違いによる不具合を防げます。 - 起動が速く軽量
OSまるごと動かす仮想マシンと違い、数秒で起動でき、1台のマシンで多数動かせます。 - 環境構築が簡単
設定を書いたファイル(Dockerfile)があれば、誰でもコマンド1つで同じ環境を作れます。 - 捨てて作り直せる
コンテナは使い捨てが前提なので、環境が壊れてもすぐ作り直せます。
Dockerが使われる場面
Dockerは、Webアプリの開発環境づくりから、本番サーバーでの運用まで幅広く使われています。チーム開発では全員の環境をそろえるために、クラウドではアプリを効率よく動かす基盤として活躍します。多数のコンテナをまとめて管理するKubernetes(クバネティス)と組み合わせて、大規模なサービスを支えることもあります。

コメント