Docker(ドッカー)

Docker(ドッカー)とは、アプリケーションをコンテナと呼ばれる軽量な入れ物に詰めて動かすためのソフトウェアです。アプリ本体だけでなく、動作に必要な設定やライブラリまでひとまとめにするため、「自分のパソコンでは動いたのに、サーバーでは動かない」といった環境の違いによるトラブルを防げます。

現実世界でいえば、物流で使われる輸送用コンテナのようなものです。中身が家具でも食品でも、規格化されたコンテナに詰めてしまえば、船でもトラックでも同じように運べます。Dockerも同じで、アプリをコンテナに詰めれば、開発者のパソコンでも本番サーバーでもクラウドでも、同じように動かせます。

Dockerの仕組み

Dockerでは、まずアプリと実行環境一式をまとめたイメージという型を作ります。イメージは「コンテナの設計図」にあたるもので、これをもとに実際に動くコンテナを起動します。イメージはDocker Hubなどの共有サービスで配布されており、世界中の人が作ったイメージを取得して、コマンド1つで同じ環境を再現できます。

仮想マシンとの違い

環境をまるごと用意する技術としては仮想マシンが有名ですが、Dockerのコンテナはより軽量です。

種類 特徴 ひとことで言うと
仮想マシン OSまるごと(ゲストOS)を仮想的に動かす。分離性が高いが、起動が遅く容量も大きい。 建物の中の貸し部屋
Docker
(コンテナ)
OSの中核部分は共有し、アプリに必要な部分だけを区切る。軽量で起動が数秒と速い。 規格化された輸送コンテナ

Dockerのメリット

Dockerは開発の現場で広く使われており、次のような利点があります。

  • どこでも同じように動く
    環境ごとコンテナに詰めるため、開発環境と本番環境の違いによる不具合を防げます。
  • 起動が速く軽量
    OSまるごと動かす仮想マシンと違い、数秒で起動でき、1台のマシンで多数動かせます。
  • 環境構築が簡単
    設定を書いたファイル(Dockerfile)があれば、誰でもコマンド1つで同じ環境を作れます。
  • 捨てて作り直せる
    コンテナは使い捨てが前提なので、環境が壊れてもすぐ作り直せます。

Dockerが使われる場面

Dockerは、Webアプリの開発環境づくりから、本番サーバーでの運用まで幅広く使われています。チーム開発では全員の環境をそろえるために、クラウドではアプリを効率よく動かす基盤として活躍します。多数のコンテナをまとめて管理するKubernetes(クバネティス)と組み合わせて、大規模なサービスを支えることもあります。

あわせて知っておきたい用語

  • コンテナ
    アプリの実行環境を軽く区切る技術。Dockerはコンテナを扱う代表的なソフトです。
  • 仮想マシン
    1台のコンピューターの中にソフトウェアで作った仮想のコンピューター。コンテナより分離性が高い反面、重量級です。
  • Kubernetes
    多数のコンテナを自動で管理・運用するためのソフトウェア。Dockerとセットで語られます。
  • イメージ
    コンテナの設計図にあたるデータ。Docker Hubなどで世界中に共有されています。
  • オープンソース
    ソースコードが公開されたソフトウェア。Dockerもオープンソースの技術を土台にしています。

コメント

タイトルとURLをコピーしました