#1. Dockerとは?
Dockerは、ソフトウェアを「コンテナ」と呼ばれる軽量の仮想化環境にパッケージ化して実行するためのプラットフォームです。コンテナは、アプリケーションとその依存関係を一つのユニットとしてまとめることができ、開発環境から本番環境に至るまで、一貫した動作を保証します。
簡単に言うと、Dockerはアプリケーションの実行環境をコードとして管理し、どこでも同じように動かすことができるツールです。
#2. Dockerのインストール
まず、Dockerを使うためには、Dockerのインストールが必要です。Dockerは公式サイトからダウンロードできます。
- Windows/Mac: Docker Desktopをインストール
- Linux: 各ディストリビューション向けにインストールガイドが提供されています(例えば、Ubuntuの場合は
apt
でインストールできます)。
インストール後、ターミナルで次のコマンドを実行して、インストールが成功していることを確認します。
docker --version
これでDockerのバージョンが表示されれば、インストールは正常に完了しています。
#3. Dockerコンテナの基本操作
3.1 Dockerイメージとは
Dockerイメージは、アプリケーションとその依存関係、設定をすべて含むテンプレートです。イメージは不変であり、コンテナはそのイメージを基に実行されます。例えば、node
というイメージを使用することで、Node.jsのアプリケーションを実行する環境が整います。
3.2 コンテナの起動
Dockerイメージからコンテナを起動するには、次のコマンドを使います。例えば、nginx
の公式イメージを使用してコンテナを実行する場合:
docker run --name my-nginx -d -p 8080:80 nginx
このコマンドの説明:
-name my-nginx
: コンテナに名前をつける。d
: コンテナをバックグラウンドで実行。p 8080:80
: ホストのポート8080をコンテナのポート80にマッピング。nginx
: 使用するDockerイメージ。
これで、ブラウザで http://localhost:8080
にアクセスすると、Nginxのデフォルトページが表示されます。
3.3 コンテナの停止と削除
実行中のコンテナを停止するには、次のコマンドを使います:
docker stop my-nginx
コンテナを完全に削除するには:
docker rm my-nginx
#4. Dockerfileによるカスタムイメージの作成
Dockerでは、Dockerfile
という設定ファイルを使って、カスタムイメージを作成することができます。Dockerfile
には、どのベースイメージを使うか、アプリケーションをどうインストールするかなどを記述します。
例えば、Node.jsアプリケーションのためのDockerfile
を作成する場合:
# 使用するベースイメージ FROM node:14 # 作業ディレクトリを設定 WORKDIR /app # package.json と package-lock.json をコンテナにコピー COPY package*.json ./ # 必要な依存関係をインストール RUN npm install # アプリケーションコードをコンテナにコピー COPY . . # コンテナのポート3000を公開 EXPOSE 3000 # アプリケーションを起動 CMD ["npm", "start"]
このDockerfile
をプロジェクトのルートディレクトリに作成した後、次のコマンドでイメージをビルドします:
docker build -t my-node-app .
これで、my-node-app
という名前のイメージが作成されます。そして、以下のコマンドでコンテナを実行できます:
docker run -d -p 3000:3000 my-node-app
これで、http://localhost:3000
にアクセスすると、Node.jsアプリケーションが表示されます。
#5. Docker Composeで複数のコンテナを管理
複数のサービスを必要とするプロジェクト(例えば、Node.jsとデータベース)では、docker-compose.yml
を使って、複数のコンテナを一元管理できます。
例えば、Node.jsアプリケーションとMongoDBを一緒に起動するためのdocker-compose.yml
は以下のようになります:
version: '3' services: app: build: . ports: - "3000:3000" depends_on: - db db: image: mongo ports: - "27017:27017"
これで、以下のコマンドを使って、両方のコンテナを一度に起動できます:
docker-compose up
#6. Dockerのメリット
- 環境依存の排除: Dockerはコンテナ内でアプリケーションを実行するため、開発環境や本番環境での依存関係の違いを排除できます。
- 軽量で高速: 仮想マシンに比べて軽量で、起動も非常に速いです。
- 移植性: Dockerコンテナはどこでも同じように実行できるため、環境による差異を気にせず、開発・本番環境を統一できます。
- スケーラビリティ: Dockerを使えば、簡単にマイクロサービスアーキテクチャを構築したり、スケーラブルなサービスを作ることができます。
#7. まとめ
Dockerを使うことで、アプリケーションの開発から本番環境へのデプロイまで、環境の統一が簡単にできます。コンテナ化は、特に複数の環境で動作するアプリケーションや、マイクロサービスアーキテクチャに最適な解決策です。Dockerの基本的な使い方を理解すれば、プロジェクトの開発効率を大幅に向上させることができます。コンテナ化のメリットを享受しながら、Dockerをうまく活用していきましょう。