先日、業務でDockerを使う機会があったのですが、Dockerについてあまり知らなかったので、調べました。とても簡単に導入できて便利なので、ぜひ使ってみてください。
Dockerとは何か?
Docker(ドッカー)とは、アプリケーションを“コンテナ”という単位で動かす技術です。
簡単に言うと、「どこでも同じ環境で動かせるようにするツール」。
たとえば、「開発では動いたのに本番環境では動かない…」そんなあるあるトラブルを解決してくれます。
何が便利なの?
1. 環境構築が一瞬でできる
「PHPのバージョンが違う」「ライブラリが入ってない」そんな悩みとはサヨナラ。docker-compose up の一発で、必要なサーバー・DB・ミドルウェアを一気に起動できます。
2. ローカルと本番が同じになる
本番とローカルで同じDocker環境を用意すれば、「ローカルでは動くのに本番で落ちる」が起きにくくなります。
3. 他人との共同開発がラク
プロジェクトに新しいメンバーが入っても、Docker環境を渡せばすぐに同じ状態で開発可能。
4. OSに依存しない
Windows、Mac、Linuxなど、OSが違っても同じようにアプリケーションを動かせます。
注意点・デメリット
1. 初期学習コストがある
「イメージ」「コンテナ」「ボリューム」「ネットワーク」など、最初は用語が多くて戸惑います。
ただ、慣れれば環境構築が超ラクになるので、覚えて損なし。
2. GUI操作に弱い
WebアプリやCLIツールは得意だけど、「Photoshop」「Office」などのGUIアプリには不向き。
3. ホストマシンの性能に依存
コンテナをたくさん立ち上げると、PCが重くなることがあります(特にメモリが少ない場合)。
Dockerの導入方法(Mac版・Windows版)
Docker Desktopというアプリをあらかじめインストールしておき、ターミナルから実行して使います。
Docker Desktopは無料?
→ 個人利用・中小企業(従業員250人以下、売上1,000万ドル未満)であれば無料です。MacもWindowsもインストール後にDocker Hubのアカウント作成を求められることがあります。(無料)
Macの場合(Apple Siliconも対応)
- 公式サイトから「Docker Desktop for Mac」をダウンロード
- 「Download for Mac」をクリックしてインストーラーをダウンロード
- ダウンロードした
.dmgファイルを開き、指示に従ってインストール - インストール後に「Docker Desktop」を起動
- ターミナルを開いて、
docker --versionが表示されればOK!
Windowsの場合(Windows 10/11 Pro または WSL2 対応 Home)
- 公式サイトにアクセス
- 「Download for Windows」をクリックしてインストーラーをダウンロード
- ダウンロードした
.exeファイルを実行し、指示に従ってインストール - WSL2(Windows Subsystem for Linux)を有効にする必要があるため、インストーラーの指示に従ってWSL2を有効化
※ Homeエディションの場合はWSL2必須です - インストール後に「Docker Desktop」を起動
- コマンドプロンプト or PowerShell で
docker --versionを実行し、バージョン情報が出れば成功!
バージョン確認
ちゃんとインストールされたか確認します。
docker --version→ 結果例:Docker version 24.0.6, build ed223bc
Dockerの基本用語
イメージ(Image)
- アプリケーションを動かすための「設計図」や「テンプレート」
- OSやソフト、設定ファイルなどが含まれる
- 例:
php:8.1、mysql:5.7など
「docker run でコンテナを作る元になるもの」
コンテナ(Container)
- イメージから作られた「実行中のアプリ環境」
- 必要なアプリが動作している状態
- 複数同時に起動できる(独立して動く)
「イメージを実際に起動した状態」
ボリューム(Volume)
- コンテナの外にある「データ保存場所」
- コンテナを削除しても、データは残る
- 主にデータベースのデータや、ログなどを保存するのに使う
「データを永続化したいときに使う」
ネットワーク(Network)
- コンテナ同士をつなぐ「通信の仕組み」
- WebアプリとDBコンテナをつなぐときに必要
- Dockerは仮想ネットワークを自動で用意してくれるが、カスタム定義も可能
「複数のコンテナを連携させるための通路」
| 用語 | ざっくり例えると | 説明 |
|---|---|---|
| イメージ | レシピ | ソフト・OS構成をまとめたテンプレート |
| コンテナ | 出来上がった料理 | イメージから作られた実行中の環境 |
| ボリューム | 倉庫・冷蔵庫 | コンテナの外に保存する永続データ |
| ネットワーク | 廊下・LANケーブル | コンテナ同士やホストと通信するための経路 |
まとめ
| 項目 | 内容 |
|---|---|
| Dockerとは? | どこでも同じ環境でアプリを動かせる技術 |
| メリット | 環境構築がラク、再現性が高い、チーム開発に強い |
| デメリット | 初期学習が必要、GUIに弱い、PCの性能に依存 |
| 導入方法 | Docker Desktopを入れればOK(Mac/Winどちらも公式あり) |
Dockerはチーム全員で同じ開発環境を作りたい時にとても便利です!ぜひ使ってみてください!