「Docker入門」と検索したものの、何から学べば良いか分からない初心者の方向けに、Dockerの基本から使い方までを5つのステップで徹底解説します。この記事を読めば、Dockerがなぜ開発環境の問題を解決するのか、仮想マシンと何が違うのかといった基礎知識が身につきます。さらに、お使いのPCへのインストールから、コマンドを使ったWebサーバー(Nginx)のコンテナ起動、ブラウザでの表示確認まで、手を動かしながら実践的に学べます。環境構築を劇的に効率化するDockerの世界へ、最初の一歩を踏み出しましょう。
Dockerとは?初心者に向けたDocker入門の基礎知識

Docker(ドッカー)とは、アプリケーションを「コンテナ」と呼ばれる独立した環境にパッケージングし、実行するためのプラットフォームです。コンテナ技術を利用することで、開発から本番運用まで、どのような環境でもアプリケーションを迅速かつ確実に動かすことができます。
例えるなら、Dockerは国際物流で使われる「輸送コンテナ」のようなものです。荷物(アプリケーション)をコンテナに入れれば、トラック、船、飛行機のどれに乗せても中身を気にせず安全に運べます。同様に、Dockerコンテナにアプリケーションを入れれば、自分のノートPC、会社のサーバー、クラウド上のサーバーなど、どこでも同じように動作させることが可能です。この手軽さと信頼性の高さから、Dockerは現代のWeb開発において必須のツールとなりつつあります。
Dockerが解決する開発環境の問題点
Dockerを学ぶメリットを理解するために、まずはDockerがなかった時代の開発現場で頻発していた問題点を見ていきましょう。これらの課題を解決できることが、Dockerが世界中の開発者に支持される理由です。
「自分のPCでは動くのに、サーバーでは動かない」問題
開発者なら誰もが一度は経験する「環境差異」の問題です。原因は、OSのバージョンの違い、インストールされているソフトウェア(ミドルウェア)やライブラリのバージョンの不一致、設定ファイルの記述ミスなど多岐にわたります。Dockerは、アプリケーション本体だけでなく、OSより下の階層(ライブラリ、設定ファイルなど)をすべてコンテナという一つのパッケージにまとめることができます。これにより、開発環境と本番環境の差異がなくなり、「どこでも同じように動く」ことが保証されます。
複雑で時間のかかる環境構築
新しいプロジェクトに参加した際や、PCを新しくした際の環境構築は非常に手間がかかる作業です。手順書を見ながら、Webサーバー、データベース、プログラミング言語などを一つひとつインストールし、バージョンを合わせ、設定ファイルを書き換える…といった作業に半日以上を費やすことも珍しくありません。Dockerを使えば、あらかじめ用意された設定ファイル(DockerfileやDocker Compose)を実行するだけで、必要なソフトウェアがすべて含まれた開発環境を数分で構築できます。
複数プロジェクト間でのバージョン競合
例えば、プロジェクトAではPHP 7.4を、プロジェクトBではPHP 8.1を使う必要がある場合、一つのPCに異なるバージョンのソフトウェアを共存させることは困難でした。Dockerはコンテナごとに完全に独立した環境を持っているため、プロジェクトごとに異なるバージョンのミドルウェアやライブラリを簡単に使い分けることができます。これにより、バージョン競合を気にすることなく、複数のプロジェクトを並行して進めることが可能になります。
Dockerと仮想マシン(VM)の具体的な違い
Dockerと同じように、隔離された実行環境を提供する技術として「仮想マシン(VM)」があります。代表的なものにVMwareやVirtualBoxが挙げられます。どちらも似た目的で使われますが、その仕組みと特性は大きく異なります。両者の違いを理解することは、Dockerの本質を掴む上で非常に重要です。大きな違いは、仮想マシンがOSレベルで環境を仮想化するのに対し、DockerはホストOSのカーネルを共有し、プロセスレベルで環境を分離する点にあります。
以下の表で、Docker(コンテナ)と仮想マシンの違いを具体的に比較してみましょう。
| 比較項目 | Docker (コンテナ) | 仮想マシン (VM) |
|---|---|---|
| 分離レベル | プロセスレベル(OSカーネルを共有) | OSレベル(ゲストOSを完全に分離) |
| リソース消費 | 少ない(軽量) | 多い(重量) |
| 起動速度 | 非常に速い(数秒) | 遅い(数分) |
| ディスクサイズ | 小さい(数MB〜数百MB) | 大きい(数GB〜数十GB) |
| ポータビリティ | 高い(イメージの移動が容易) | 低い(環境全体の移動が困難) |
表からもわかるように、Dockerコンテナは仮想マシンに比べて、起動が圧倒的に速く、メモリやディスクの使用量も格段に少ないのが特徴です。これは、コンテナがゲストOSを持たず、ホストOSのカーネルを共有することで、OSが二重に起動するオーバーヘッドをなくしているためです。この「軽量・高速」という特性が、開発サイクルのスピードアップや、サーバーリソースの効率的な利用に大きく貢献します。
Dockerの仕組みを支えるイメージとコンテナ
Dockerを理解する上で絶対に欠かせないのが、「イメージ」と「コンテナ」という2つの中心的な概念です。この2つの関係を理解することが、Docker入門の鍵となります。一言で表すなら、イメージは「設計図」、コンテナは「その設計図から建てられた家」と考えると非常に分かりやすいでしょう。この仕組みがあるからこそ、Dockerは「どこでも同じ環境を、すぐに、いくつでも作れる」という強力なメリットを提供できるのです。ここでは、それぞれの役割と関係性について詳しく見ていきましょう。
設計図の役割を持つDockerイメージ
Dockerイメージとは、コンテナを作成するために必要な設定やファイル一式をまとめた「テンプレート」です。これには、OSの基本的なファイルシステム、アプリケーションを実行するために必要なライブラリ、ミドルウェア、そして自作のアプリケーションコードなどが含まれます。イメージは一度作成されると変更が加えられない「読み取り専用」という重要な特徴を持っています。
この「変更できない」という性質のおかげで、あるイメージから作られたコンテナは、誰がいつどこで実行しても全く同じ環境になることが保証されます。開発者のPCで動いていたものが、本番サーバーでは動かないといった「環境差異の問題」を根本的に解決するのが、このDockerイメージの役割です。
また、イメージは「レイヤー」と呼ばれる階層構造で構成されています。例えば、「Ubuntu(OS)」というベースイメージの上に、「Nginx(Webサーバー)」のレイヤーを重ね、さらにその上に「自作のWebサイトのファイル」のレイヤーを重ねる、といった形です。この構造により、共通部分は再利用されるため、イメージの管理や転送が非常に効率的になります。
実際にアプリケーションが動くDockerコンテナ
Dockerコンテナとは、Dockerイメージという設計図(テンプレート)を元に作成され、実際にアプリケーションが動作する「実体」です。イメージが静的なファイル群であるのに対し、コンテナはプロセスが実行されている動的な状態を指します。1つのイメージから、同じ設定を持つコンテナを何個でも、瞬時に起動させることができます。
各コンテナは、ホストマシン(Dockerが動いているPCやサーバー)のOSカーネルを共有しながらも、それぞれが独立した実行環境を持っています。ファイルシステム、ネットワーク、プロセスなどが隔離されているため、あるコンテナでの変更が他のコンテナやホストマシンに影響を与えることはありません。これにより、複数のアプリケーションを安全かつクリーンに共存させることが可能になります。
このイメージとコンテナの関係性を表にまとめると、以下のようになります。
| 項目 | Dockerイメージ | Dockerコンテナ |
|---|---|---|
| 役割 | コンテナの元となる設計図・テンプレート | イメージから作成され、実際にアプリケーションが動く実体 |
| 状態 | 静的(ファイルや設定の集まり) | 動的(プロセスが実行されている状態) |
| 変更の可否 | 変更不可(読み取り専用) | 変更可能(実行中にファイル生成や変更が可能) |
| 実体 | ファイル群 | 隔離されたプロセス |
| 例え | 家の設計図、料理のレシピ、OSのインストールディスク | 設計図から建てられた家、レシピから作られた料理、インストール済みのOS |
このように、まずアプリケーションの実行環境を「イメージ」として固め、そのイメージを元に隔離された「コンテナ」を起動する、というのがDockerの基本的な仕組みです。次のステップでは、このイメージをどこから手に入れ、どうやってコンテナを起動するのかを具体的に学んでいきましょう。
【ステップ1】お使いのPCにDockerをインストールする
Dockerの学習を始めるための最初のステップは、お使いのパソコンにDocker環境を構築することです。ここでは、Docker社が公式に提供している「Docker Desktop」というアプリケーションをインストールします。Docker Desktopを利用することで、WindowsやMac上で手軽にコンテナを実行・管理できるようになります。ご自身のOSに合わせた手順で、インストール作業を進めていきましょう。
Docker Desktop for Windowsのインストール手順
Windows環境でDockerを利用する場合、WSL 2 (Windows Subsystem for Linux 2) という仕組みを使ってLinuxコンテナを動かすのが現在の主流です。まず、お使いのPCが以下のシステム要件を満たしているか確認してください。
| 項目 | 要件 |
|---|---|
| OS | Windows 11 (64-bit): Home/Pro 22H2以降, Enterprise/Education 22H2以降 Windows 10 (64-bit): Home/Pro 22H2以降, Enterprise/Education 22H2以降 |
| WSL 2 | バージョン2が有効になっていること。有効でない場合、インストール中に有効化を促されます。 |
| ハードウェア | 仮想化支援機能(VT-x/AMD-V)が有効な64ビットプロセッサ、4GB以上のRAM |
システム要件を満たしていることを確認したら、以下の手順でインストールを進めます。
インストーラーのダウンロード
Dockerの公式サイトから「Docker Desktop for Windows」のインストーラー(.exeファイル)をダウンロードします。インストーラーの実行
ダウンロードしたインストーラーをダブルクリックして実行します。Configuration(設定)画面が表示されたら、「Use WSL 2 instead of Hyper-V (recommended)」のチェックボックスがオンになっていることを確認し、「Ok」をクリックします。インストールの完了と再起動
インストールが完了すると、再起動を求める画面が表示されます。「Close and restart」ボタンをクリックしてPCを再起動してください。初回起動と利用規約への同意
PC再起動後、Docker Desktopが自動的に起動します。初回起動時にはサービス利用規約(Docker Subscription Service Agreement)への同意が求められます。内容を確認し、「Accept」ボタンをクリックします。インストールの確認
Docker Desktopのダッシュボード画面が表示されれば、インストールは成功です。念のため、コマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行してみましょう。バージョン情報が表示されれば、コマンドラインからの操作も準備完了です。docker --version
Docker Desktop for Macのインストール手順
MacにDocker Desktopをインストールします。お使いのMacがIntelチップかAppleシリコン(M1, M2, M3など)かによってインストーラーが異なるため、事前に確認しておきましょう。確認方法は、画面左上のアップルメニューから「このMacについて」を選択すると表示される情報で確認できます。
| 項目 | 要件 |
|---|---|
| OS | macOS 12 (Monterey) 以降のバージョン |
| チップ | Appleシリコン または Intelチップ(仮想化支援機能対応) |
| ハードウェア | 4GB以上のRAM |
システム要件を満たしていることを確認したら、以下の手順でインストールを進めます。
インストーラーのダウンロード
Dockerの公式サイトから「Docker Desktop for Mac」のインストーラー(.dmgファイル)をダウンロードします。このとき、お使いのMacに合わせて「Apple Chip」または「Intel Chip」のいずれかを選択します。アプリケーションフォルダへの移動
ダウンロードした.dmgファイルを開くと、DockerのアイコンとApplicationsフォルダのエイリアスが表示されます。DockerのアイコンをApplicationsフォルダへドラッグ&ドロップします。Dockerの起動
Applicationsフォルダ内にあるDockerをダブルクリックして起動します。インターネットからダウンロードしたアプリケーションのため、初回起動時に警告が表示される場合がありますが、「開く」をクリックして進めます。権限の許可と利用規約への同意
Dockerの動作に必要な権限の許可を求めるダイアログが表示されたら、パスワードを入力して許可します。その後、サービス利用規約が表示されるので、内容を確認して「Accept」をクリックします。インストールの確認
画面上部のメニューバーにDockerのクジラのアイコンが表示され、アイコンをクリックして表示されるメニューで「Engine running」となっていれば、インストールと起動は成功です。ターミナルを開き、以下のコマンドを実行してバージョン情報が表示されることも確認しておきましょう。docker --version
【ステップ2】Docker Hubからイメージを取得する(docker pull)
ステップ1でDockerのインストールが完了したら、次はいよいよDockerの心臓部ともいえる「イメージ」を取得します。Dockerでは、このイメージがなければコンテナを起動することはできません。このステップでは、世界中の開発者が作成したDockerイメージが保管されている「Docker Hub」から、Webサーバーのイメージを自分のPC(ローカル環境)にダウンロードする方法を学びます。使用するコマンドはdocker pullです。
Docker Hubとは
Docker Hubとは、Docker社が公式に提供している、Dockerイメージを保存・共有するためのクラウドベースのレジストリサービスです。ソースコードをGitHubで管理するように、DockerイメージはDocker Hubで管理・公開するのが一般的で、「Docker版のGitHub」と考えるとイメージしやすいでしょう。
Docker Hubには、UbuntuやCentOSといったOSの基本イメージから、Nginx(Webサーバー)、MySQL(データベース)、PythonやNode.js(プログラミング言語の実行環境)など、様々な用途の公式イメージが数多く登録されています。これらの高品質なイメージを利用することで、開発者は複雑な環境構築を自分で行うことなく、必要なソフトウェアがセットアップ済みのコンテナをすぐに動かすことができます。
Webサーバー(Nginx)のイメージをダウンロードするコマンド
それでは、実際にコマンドを使ってDocker Hubからイメージをダウンロードしてみましょう。ここでは、軽量で高性能なWebサーバーとして人気の「Nginx(エンジンエックス)」のイメージを取得します。
ターミナル(Windowsの場合はPowerShellまたはコマンドプロンプト)を開き、以下のdocker pullコマンドを実行してください。docker pullは、Docker Hubなどのレジストリから指定したイメージを取得(ダウンロード)するためのコマンドです。
このコマンドは、「nginx」という名前のイメージを取得せよ、という命令です。イメージには「タグ」と呼ばれるバージョン情報が付与されており、nginx:1.25のようにバージョンを明示的に指定できます。タグを省略した場合は、自動的にlatestというタグ(最新安定版)が指定されたものとして扱われます。
コマンドを実行すると、以下のようにダウンロードが開始されます。環境によっては少し時間がかかる場合があります。
「Downloaded newer image for nginx:latest」と表示されれば、イメージのダウンロードは成功です。
ダウンロードしたイメージがPC内に正しく保存されているかを確認するには、docker imagesコマンドまたはdocker image lsコマンドを実行します。
実行すると、以下のようにローカルに保存されているイメージの一覧が表示されます。先ほどダウンロードしたnginxイメージの情報が含まれていることを確認しましょう。
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
|---|---|---|---|---|
| nginx | latest | 605c77e624dd | 2 weeks ago | 141MB |
これで、コンテナを起動するための設計図である「Nginxのイメージ」の準備が整いました。次のステップでは、このイメージを使って実際にコンテナを起動していきます。
【ステップ3】Dockerコンテナを起動する(docker run)

ステップ2でWebサーバー(Nginx)のDockerイメージを取得できました。次はいよいよ、そのイメージを基に「コンテナ」を起動します。コンテナは、アプリケーションが実際に動作する隔離された環境です。ここでは、Dockerで最も基本的かつ重要なコマンドの一つであるdocker runコマンドの使い方を学び、実際にWebサーバーを動かしてみましょう。
初めてのコンテナ起動と動作確認
まずは、ダウンロードしたNginxのイメージを使って、最もシンプルな方法でコンテナを起動してみます。お使いのターミナル(WindowsならPowerShellやコマンドプロンプト、Macならターミナル)で以下のコマンドを実行してください。
このコマンドを実行すると、Nginxサーバーが起動し、そのログがターミナル上に表示され続けます。この状態ではターミナルがNginxに占有されてしまい、他のコマンドを入力できません。これを「フォアグラウンド実行」と呼びます。Ctrl + Cを押すことで、コンテナを停止して元の状態に戻すことができます。
実際の開発では、サーバーを裏側で動かしたまま、他の作業を続けたい場合がほとんどです。そのために「バックグラウンド実行」という方法を使います。-d(または--detach)オプションを付けてコマンドを実行してみましょう。
実行後、今度はログが表示されず、代わりに長い文字列(コンテナID)が表示されたはずです。これは、コンテナがバックグラウンドで正常に起動したことを示しています。これで、ターミナルを使い続けながら、コンテナを動かしておくことができるようになりました。
ポートフォワーディングでブラウザからアクセス
コンテナはバックグラウンドで起動しましたが、このままではまだブラウザからWebサーバーにアクセスできません。なぜなら、コンテナはホストマシン(あなたのPC)とは隔離されたネットワーク空間で動作しているためです。
そこで、「ポートフォワーディング(ポートマッピング)」という設定が必要になります。これは、ホストマシンの特定のポートへのアクセスを、コンテナ内のポートに転送する仕組みです。-p(または--publish)オプションを使い、「ホストのポート番号:コンテナのポート番号」の形式で指定します。
Nginxは、デフォルトでコンテナ内の80番ポートでリクエストを待ち受けています。今回は、ホストマシンの8080番ポートへのアクセスを、コンテナの80番ポートへ転送してみましょう。以下のコマンドを実行してください。
このコマンドは、以下の3つの要素で構成されています。
-d: コンテナをバックグラウンドで実行します。-p 8080:80: ホストマシンの8080番ポートを、コンテナの80番ポートに接続します。nginx: 起動するコンテナの基になるイメージ名です。
コマンド実行後、お使いのWebブラウザを開き、アドレスバーに「http://localhost:8080」と入力してください。「Welcome to nginx!」というタイトルのページが表示されれば成功です。あなたのPC上で、DockerコンテナとしてNginxのWebサーバーが動作していることを確認できました。
docker runコマンドには、他にも便利なオプションが多数あります。代表的なものをいくつか表にまとめました。
| オプション | 説明 |
|---|---|
-d, --detach | コンテナをバックグラウンドで実行し、コンテナIDを出力します。 |
-p, --publish | ポートフォワーディングを設定します。(例: -p 8080:80) |
--name | コンテナに任意の名前を付けます。名前を付けておくと、後の管理が容易になります。(例: --name my-nginx) |
-it | コンテナの標準入力とターミナルを接続し、インタラクティブな操作(コンテナ内でのコマンド実行など)を可能にします。-iと-tを組み合わせたオプションです。 |
--rm | コンテナが停止した際に、自動的にそのコンテナを削除します。一時的なお試し実行に便利です。 |
これらのオプションを組み合わせることで、より柔軟にコンテナを起動・管理できます。例えば、my-web-serverという名前を付けて、停止したら自動で削除されるNginxコンテナを起動するには、次のようなコマンドになります。
これで、Dockerコンテナを起動し、外部からアクセスする基本的な流れをマスターできました。次のステップでは、起動したコンテナを管理するためのコマンドを学んでいきましょう。
【ステップ4】基本的なコンテナ操作コマンドを覚える
ステップ3ではdocker runコマンドを使ってコンテナを起動しました。しかし、一度起動したコンテナを管理する方法を知らなければ、Dockerを効率的に活用することはできません。起動中のコンテナはPCのリソースを消費しますし、不要になったコンテナは整理する必要があります。
このステップでは、Dockerを扱う上で必須となる基本的なコンテナ操作コマンドを学びます。ここで紹介するコマンドをマスターすれば、コンテナの状態確認、停止、削除が自由自在に行えるようになり、Docker環境を常にクリーンに保つことができます。
起動中のコンテナを確認する(docker ps)
まず最初に覚えるべきは、現在動作しているコンテナの一覧を表示するdocker psコマンドです。psは「Process Status」の略で、Linuxの同名コマンドに馴染みのある方には直感的に理解できるでしょう。ターミナル(Windowsの場合はPowerShellやコマンドプロンプト)で以下のコマンドを実行してみてください。
このコマンドを実行すると、現在起動しているコンテナの情報が表形式で表示されます。ステップ3でNginxコンテナを起動したままであれば、次のような出力が確認できるはずです。
| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
|---|---|---|---|---|---|---|
| f2a9914242d4 | nginx | “/docker-entrypoint.…” | About a minute ago | Up About a minute | 0.0.0.0:8080->80/tcp | web-server |
各項目はコンテナの重要な情報を示しています。特に「CONTAINER ID」と「NAMES」は、後ほどコンテナを停止・削除する際に使用します。
| 項目名 | 説明 |
|---|---|
| CONTAINER ID | コンテナを一位に識別するためのユニークなID。コマンド実行時には先頭の数文字を指定するだけでも動作します。 |
| IMAGE | コンテナの元となったDockerイメージ名。 |
| COMMAND | コンテナ起動時に実行されているコマンド。 |
| CREATED | コンテナが作成されてからの経過時間。 |
| STATUS | コンテナの状態。Upは起動中であることを示します。 |
| PORTS | ホストOSとコンテナ間のポートフォワーディング設定。ホスト側ポート->コンテナ側ポートの形式で表示されます。 |
| NAMES | コンテナの名前。docker run時に--nameオプションで指定しなかった場合、Dockerが自動的にユニークな名前を割り当てます。 |
また、docker psコマンドに-a(または--all)オプションを付けると、停止中のコンテナも含めたすべてのコンテナを表示できます。これは、後で不要なコンテナを削除する際に役立ちます。
コンテナを停止する(docker stop)
次に、起動中のコンテナを停止する方法を学びましょう。コンテナの停止にはdocker stopコマンドを使用します。このコマンドは、実行中のプロセスに停止シグナルを送り、安全にコンテナを終了させます。
コマンドの引数には、停止したいコンテナの「CONTAINER ID」または「NAMES」を指定します。どちらもdocker psコマンドで確認できます。
コマンドが成功すると、引数で指定したコンテナIDまたは名前が返されます。停止したかどうかを確認するには、再度docker psコマンドを実行します。一覧から該当のコンテナが消えていれば、停止は成功です。docker ps -aを実行すると、STATUSが「Exited」に変わっていることが確認できます。
不要なコンテナを削除する(docker rm)
コンテナを停止しただけでは、データはPC上に残り続けます。検証などで一時的に作成したコンテナが不要になった場合は、docker rmコマンドで完全に削除しましょう。これにより、ディスク容量の圧迫を防ぎ、環境を整理できます。
重要な注意点として、docker rmコマンドは原則として停止しているコンテナしか削除できません。起動中のコンテナを削除しようとするとエラーが表示されます。そのため、コンテナを削除する際は、まずdocker stopで停止するのが基本的な手順です。
削除したいコンテナが複数ある場合は、IDや名前をスペースで区切って複数指定することも可能です。
もし、起動中のコンテナを強制的に停止して削除したい場合は、-f(または--force)オプションを使用します。ただし、この方法はコンテナ内のデータが失われる可能性があるため、本番環境などでの使用には注意が必要です。
ここまで紹介したdocker ps、docker stop、docker rmの3つのコマンドは、コンテナライフサイクル管理の基本です。これらのコマンドを使いこなすことで、Dockerの運用が格段にスムーズになります。
【ステップ5】DockerfileでDocker入門から一歩先へ
これまでのステップでは、Docker Hubにある既存のイメージを使い、コンテナを起動する方法を学びました。しかし、実際の開発では、アプリケーションに必要なライブラリをインストールしたり、独自の設定ファイルを追加したりと、既存のイメージをカスタマイズする必要があります。ここでは、Docker入門から一歩進んで、オリジナルのDockerイメージを作成するための「Dockerfile」と、複数のコンテナを効率的に管理する「Docker Compose」について解説します。
Dockerfileとは何か
Dockerfileとは、Dockerイメージを自作するための設計図となるテキストファイルです。OSの指定、コマンドの実行、ファイルのコピーなど、環境構築に必要な一連の命令をコードとして記述します。これにより、誰が実行しても全く同じ環境を再現できるため、開発チーム内での環境差異といった問題を根本から解決します。手作業での環境構築が不要になり、開発の自動化と効率化が飛躍的に向上します。
例えば、Nginxのコンテナに自作のWebサイトファイル(index.html)を配置したい場合、以下のようなDockerfileを作成します。
このファイルがあるディレクトリでdocker buildコマンドを実行すると、これらの命令が順に実行され、新しいDockerイメージが作成されます。Dockerfileでよく使われる主要な命令は以下の通りです。
| 命令 | 説明 |
|---|---|
FROM | ベースとなるDockerイメージを指定します。すべてのDockerfileは、この命令から始まります。 |
RUN | イメージをビルドする際に実行するコマンドを指定します。主にパッケージのインストールや設定の変更に用います。 |
COPY | ホストマシン(ローカルPC)のファイルやディレクトリを、イメージ内の指定したパスにコピーします。 |
CMD | コンテナ起動時にデフォルトで実行されるコマンドを指定します。1つのDockerfileに1つだけ記述するのが一般的です。 |
WORKDIR | RUNやCMDなどの命令を実行する際の作業ディレクトリを指定します。 |
EXPOSE | コンテナが公開するポート番号を指定します。これはあくまでドキュメント的な意味合いで、実際にポートを公開するにはdocker runコマンドの-pオプションが必要です。 |
Dockerfileを使いこなすことで、アプリケーションに最適化された独自の実行環境をコードとして管理できるようになり、Dockerの真価を最大限に引き出すことができます。
Docker Composeによる複数コンテナ管理
Webアプリケーションは、Webサーバー、アプリケーションサーバー、データベースサーバーなど、複数のサービス(コンテナ)が連携して動作することが一般的です。これらのコンテナを一つずつdocker runコマンドで起動し、ネットワーク設定を行うのは非常に手間がかかり、管理も複雑になります。
この問題を解決するのがDocker Composeです。Docker Composeは、複数のコンテナをまとめて定義し、管理するためのツールです。docker-compose.ymlというYAML形式の設定ファイルに、使用するイメージ、ポート設定、ボリューム、ネットワークなど、アプリケーション全体の構成情報を記述します。
例えば、Webサーバー(Nginx)とデータベース(MySQL)の2つのコンテナを連携させる場合、以下のようにdocker-compose.ymlを記述します。
このファイルがあるディレクトリでdocker-compose upというコマンドを実行するだけで、設定ファイルに記述されたすべてのコンテナが適切な設定で一括して起動します。また、docker-compose downコマンドを使えば、関連するすべてのコンテナをまとめて停止・削除できます。これにより、複雑なアプリケーション環境の構築と破棄がコマンド一つで簡単に行えるようになり、開発効率が劇的に向上します。
まとめ
本記事では、Docker入門の第一歩として、インストールからコンテナ起動までの具体的な手順を5つのステップで解説しました。Dockerは、開発環境の差異による問題を解決し、誰でも迅速かつ手軽にアプリケーション実行環境を構築できる強力なツールです。
docker pullやdocker runといった基本的なコマンド操作だけでも、その利便性を十分に体感できたはずです。さらにDockerfileやDocker Composeを使いこなせば、より実践的な開発に応用できます。この記事をきっかけに、ぜひDockerをあなたの開発プロセスに取り入れてみてください。

