結論: Dockerは「道具ごと箱に詰めて運ぶ」仕組み
プログラムを動かすには、アプリ本体だけでなく言語の実行環境・ライブラリ・設定ファイルなど、たくさんの「道具」が必要です。これまでは、その道具を自分のパソコンに直接インストールしていました。
ところがこの方法だと、別のアプリを作るときに道具のバージョンがぶつかるという問題が起きます。「アプリAは言語のv1が必要、アプリBはv2が必要」——どちらかを入れると、もう一方が動かなくなるわけです。
Dockerは、この道具をアプリごとに独立した箱に分けて入れるという発想で解決します。引っ越し用のコンテナのように、中身が混ざらないので、いくつ並べてもぶつかりません。
コンテナとは何か — イメージと箱の関係
この箱そのものがコンテナです。アプリと、それを動かすのに必要な道具を、ひとまとめに詰めた入れ物だと考えてください。
コンテナを作るには、まず何を詰めるかを書いた指示書を用意します。これが「Dockerfile」です。「この言語のこのバージョンを入れて、このライブラリを入れて、このアプリを置く」といった手順を書いたテキストファイルで、ここからイメージという箱の設計図が作られます。
ここが便利なところで、イメージさえあれば、同じ中身の箱をいくつでも、何度でも作れます。壊れたら捨てて作り直せばよく、アクセスが増えたら同じ箱を並べて増やすこともできます。
仮想マシンとの違い — 持ち運ぶ荷物の量
似た仕組みに「仮想マシン」があります。どちらもパソコンの中に別の環境を作りますが、持ち運ぶ荷物の量が違います。
仮想マシンはOSごと丸ごと再現するので、家の引っ越しでいえば建物ごと運ぶようなもの。重く、起動にも時間がかかります。一方コンテナは、パソコンのOSを共有して必要な家財道具だけを運ぶので、軽く、数秒で起動します。
なぜ開発現場で必ず使われるのか
Dockerは、いまや多くの開発現場で当たり前に使われています。理由は大きく3つです。
①「私のパソコンでは動くのに」がなくなる
チーム開発で最も面倒なトラブルが、人によって環境が微妙に違うために起きる不具合です。同じコードなのに、Aさんのパソコンでは動いてBさんのパソコンでは動かない——原因は道具のバージョン違いだった、というのはよくある話です。
Dockerを使えば、全員がまったく同じ中身の箱でアプリを動かします。しかもその箱は、テスト用の環境でも、本番のサーバーでもそのまま動きます。
② 新しく入った人が、すぐ開発を始められる
従来は、新メンバーが開発に参加するたびに「あの道具を入れて、この設定をして……」という環境構築に半日〜数日かかっていました。Dockerがあれば、用意されたコマンドを1つ実行するだけで、全員と同じ環境が手に入ります。
③ 自分のパソコンを汚さない
試したい技術があっても、パソコンに直接インストールするのは気が引けるものです。コンテナなら、試して、要らなくなったら箱ごと捨てるだけ。パソコン本体には何も残りません。AIに開発を任せる記事でも実行環境にDockerをすすめているのは、この「汚さない・やり直せる」性質のためです。
導入手順 — WindowsとMacにDocker Desktopを入れる
Dockerはもともとサーバー向けの技術(Linux)で生まれた仕組みのため、WindowsやMacでそのままは動きません。そこで使うのがDocker Desktopという公式アプリです。WindowsでもMacでも、まずこれを入れると覚えておけば大丈夫です。
Windowsの場合 — WSL2が土台になる
導入の流れ
- WSL2を有効にする — WSL2は、Windowsの中でLinuxを動かすための公式の仕組みです。近年のWindowsでは、Docker Desktopのインストール時に案内に従うだけで一緒に用意されます。
- Docker Desktopをインストールする — 公式サイトからインストーラーをダウンロードして実行します。途中で選択肢が出ても、基本は既定のまま進めて構いません。
- パソコンを再起動する — 仕組み上、再起動が必要になることがあります。
- 動作を確認する — Docker Desktopを起動し、画面上のクジラのアイコンが「動作中」になっていれば準備完了です。
Macの場合 — チップの種類だけ確認する
MacではWSL2は使いません。代わりにDocker Desktopが内部で軽量な仮想マシンを用意してくれるので、利用者がその存在を意識することはほとんどありません。
Macで1つだけ気をつけたいのが、チップの種類です。Macには新しい「Appleシリコン」と、以前の「Intel」の2種類があり、ダウンロードするDocker Desktopが違います。間違えるとインストールできないので、最初に確認しておきましょう。
- 自分のMacのチップを確認する — 画面左上のリンゴマークから「このMacについて」を開きます。「Apple M1」「Apple M2」などと書かれていればAppleシリコン、「Intel」と書かれていればIntelです。
- 対応するDocker Desktopをダウンロードする — 公式サイトのダウンロードページで「Apple Silicon版」「Intel版」のうち、先ほど確認した方を選びます。
- インストールする — ダウンロードしたファイル(.dmg)を開き、表示されたDockerのアイコンを「アプリケーション」フォルダにドラッグします。
- 起動して権限を許可する — アプリケーションフォルダからDockerを起動します。初回はMacのパスワード入力を求められることがあります。
- 動作を確認する — 画面上部のメニューバーにクジラのアイコンが表示され、「running(実行中)」になっていれば準備完了です。
すでにHomebrew(Mac向けのソフト管理ツール)を使っている場合は、コマンド brew install --cask docker でも導入できます。慣れていなければ、公式サイトからのインストールで問題ありません。
なおLinuxの場合は、Docker Desktopを使わずにDocker本体を直接インストールできます。もともとLinux向けの技術なので、仮想マシンを挟む必要がないためです。
なお、実際に使うときは「Dockerfileを書く」「起動コマンドを打つ」といった作業が出てきますが、最初から自分で書ける必要はありません。多くのプロジェクトには設定ファイルが用意されていて、決められたコマンドを打つだけで動きます。
本番でも必須 — AWS ECSへのデプロイが標準に
Dockerが「必須の技術」と言われるいちばんの理由は、本番環境でも同じ箱をそのまま使うからです。開発で動作を確認した箱を、そのままクラウドに持っていって動かせます。
AWSには、コンテナを動かすための専用サービスECS(Elastic Container Service)があります。作ったイメージをAWSの保管庫(ECR)に置き、ECSに「この箱を動かして」と指示すると、必要な数だけ起動してくれます。アクセスが増えたら箱を増やし、減ったら減らす、といった調整もできます。
さらにFargateという仕組みを使うと、箱を動かすサーバー自体の管理も不要になります。インフラの面倒を見る手間が減るため、この組み合わせは多くの現場で標準的な選択肢になっています。
現場での会話の例: 「このアプリ、コンテナ化してECSに載せましょう」
「アプリをDockerの箱に詰めて、AWSのコンテナ用サービスで動かそう」という意味です。デプロイの話題でよく出てきます。
コンテナを使わない公開方法もありますが、「開発で動いたものが本番でも同じように動く」という安心感は、他の方法では得にくいものです。だからこそ、開発から公開までを通してDockerが使われています。公開手段そのものの違いは、アプリの公開手順の記事でも案内しています。
よくある質問
Dockerと仮想マシンは何が違うのですか?
持ち運ぶ荷物の量が違います。仮想マシンはOSごと丸ごと再現するため重く、起動にも時間がかかります。DockerのコンテナはパソコンのOSを共有し、アプリと必要な道具だけを箱に入れるため軽く、数秒で起動できます。
WindowsやMacでDockerを使うには何が必要ですか?
どちらもDocker Desktopというアプリを入れるのが基本です。WindowsではWSL2というWindowsの中でLinuxを動かす仕組みも使いますが、Docker Desktopのインストール時にまとめて用意されます。Macの場合はチップの種類(AppleシリコンかIntelか)に合ったものを選ぶ点にだけ注意してください。
Docker Desktopは無料で使えますか?
個人利用や小規模な事業では無料で使える枠が用意されています。ただし一定規模以上の企業で使う場合は有料のサブスクリプションが必要になります。条件は変わることがあるため、会社で導入する前に公式サイトで最新のライセンス条件を確認してください。
Dockerは初心者でも覚えるべき技術ですか?
エンジニアを目指すなら、早い段階で触れておく価値があります。開発環境を汚さずに試せるうえ、AWSなどのクラウドへ公開するときもコンテナが標準的な方法になっているためです。最初から仕組みを深く理解する必要はなく、まずは用意された設定で動かしてみるところから始めれば十分です。