macOS/Windows で Docker 開発環境をセットアップする方法

DockerBeginner
オンラインで実践に進む

はじめに

Docker は、開発者にとって、コンテナ化されたアプリケーションを容易に作成および管理するための不可欠なツールとなっています。このチュートリアルでは、macOS または Windows 上で Docker 開発環境をセットアップする手順を案内し、Docker ベースのアプリケーションの構築とデプロイに必要なツールと知識を習得できるようにします。

Docker の基礎理解

Docker とは何か?

Docker は、開発者がアプリケーションをコンテナと呼ばれる一貫した隔離された環境で構築、デプロイ、実行できるようにするオープンソースプラットフォームです。コンテナは、アプリケーションとそのすべての依存関係をパッケージ化し、アプリケーションが基盤となるインフラストラクチャに関係なく、確実に一貫して実行されるようにします。

Docker コンテナ

Docker コンテナは、アプリケーションの実行に必要なすべて(コード、ランタイム、システムツール、ライブラリ)を含む軽量、スタンドアロン、実行可能なパッケージです。コンテナは互いに、そしてホストオペレーティングシステムから隔離されており、アプリケーションが実行されるための安定した信頼性の高い環境を提供します。

graph LR
    A[アプリケーション] --> B[依存関係]
    B --> C[ランタイム]
    C --> D[OS]
    D --> E[Docker コンテナ]
    E --> F[Docker ホスト]

Docker イメージ

Docker イメージは、コンテナの構成要素です。イメージは、Docker コンテナを作成するための指示を含む読み取り専用テンプレートです。イメージは、イメージを構築するために必要なすべての命令を含むテキストファイルである Dockerfile を使用して作成されます。

Docker レジストリ

Docker レジストリは、Docker イメージの保存と配布システムです。最も一般的なパブリックレジストリは Docker Hub であり、さまざまなアプリケーションやサービス向けに構築済みのイメージを多数提供しています。

Docker アーキテクチャ

Docker はクライアントサーバーアーキテクチャを採用しており、Docker クライアントは Docker デーモンと通信します。Docker デーモンは、Docker コンテナの構築、実行、管理を担当します。

コンポーネント 説明
Docker クライアント Docker システムのユーザーインターフェース。Docker デーモンと対話するために使用されます。
Docker デーモン Docker コンテナやイメージを管理するバックグラウンドプロセス。
Docker レジストリ Docker イメージを保存および配布するためのリポジトリ。
Docker ネットワーク コンテナが互いに、および外部の世界と通信できるようにします。
Docker ボリューム Docker コンテナによって生成され、使用されるデータを永続的に保存する方法を提供します。

macOS または Windows で Docker をインストールする

macOS で Docker をインストールする

  1. Docker ウェブサイト にアクセスし、Docker Desktop for Mac をダウンロードします。
  2. インストーラーを実行し、画面の指示に従ってインストールを完了します。
  3. インストール後、Docker アイコンがメニューバーに表示され、Docker が実行されていることを示します。

Windows で Docker をインストールする

  1. Docker ウェブサイト にアクセスし、Docker Desktop for Windows をダウンロードします。
  2. インストーラーを実行し、画面の指示に従ってインストールを完了します。
  3. インストール後、Docker アイコンがシステムトレイに表示され、Docker が実行されていることを示します。

インストールの確認

Docker のインストール後、ターミナル(macOS)または PowerShell(Windows)を開き、以下のコマンドを実行してインストールを確認できます。

docker version

これにより、システムにインストールされている Docker クライアントと Docker サーバー(デーモン)のバージョンが表示されます。

Docker Compose のインストール

Docker Compose は、マルチコンテナ Docker アプリケーションを定義および実行するためのツールです。Docker Compose をインストールするには:

  1. Docker Compose の GitHub リポジトリ にアクセスし、オペレーティングシステムに対応した最新の Docker Compose をダウンロードします。
  2. ダウンロードしたファイルを以下のコマンドを実行して実行可能ファイルにします(Linux/macOS の場合):
    chmod +x docker-compose
    
  3. ダウンロードした Docker Compose バイナリを、システムの PATH にあるディレクトリ(例:/usr/local/bin/ または ~/bin/) に移動します。

これで、以下のコマンドを実行してインストールを確認できます。

docker-compose version

これにより、システムにインストールされている Docker Compose のバージョンが表示されます。

Docker 開発環境の構築

Dockerfile の作成

Dockerfile は、Docker イメージを構築するために必要なすべての命令を含むテキストファイルです。シンプルな Python Web アプリケーションのための Dockerfile の例を次に示します。

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]

この Dockerfile は以下の処理を行います。

  1. python:3.9-slim ベースイメージから開始します。
  2. 作業ディレクトリを /app に設定します。
  3. requirements.txt ファイルを作業ディレクトリにコピーします。
  4. requirements.txt に記載されている Python の依存関係をインストールします。
  5. アプリケーションコードを作業ディレクトリにコピーします。
  6. アプリケーションを実行するためのコマンド (python app.py) を指定します。

Docker イメージの構築

Dockerfile から Docker イメージを構築するには、Dockerfile と同じディレクトリで以下のコマンドを実行します。

docker build -t my-python-app .

これにより、タグ my-python-app を持つ Docker イメージが構築されます。

Docker コンテナの実行

my-python-app イメージから Docker コンテナを実行するには、以下のコマンドを使用します。

docker run -p 8080:8080 my-python-app

これにより、新しいコンテナが起動され、ホストのポート 8080 がコンテナのポート 8080 にマッピングされます。

Docker Compose を用いた開発

Docker Compose は、マルチコンテナ Docker アプリケーションを定義および実行するためのツールです。データベースを備えたシンプルな Web アプリケーションのための docker-compose.yml ファイルの例を次に示します。

version: "3"
services:
  web:
    build: .
    ports:
      - 8080:8080
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: myapp
      POSTGRES_PASSWORD: secret
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

この docker-compose.yml ファイルは、webdb の 2 つのサービスを定義しています。web サービスは、現在のディレクトリから Docker イメージを構築し、ホストのポート 8080 をコンテナのポート 8080 にマッピングします。db サービスは、公式の PostgreSQL イメージを使用し、アプリケーション用のデータベースを設定します。

アプリケーションを起動するには、以下のコマンドを実行します。

docker-compose up -d

これにより、webdb のコンテナがバックグラウンドで起動します。

まとめ

このチュートリアルに従うことで、macOS または Windows マシンに Docker をインストールする方法、Docker の基本、そしてあなたのニーズに合わせた Docker 開発環境を構築する方法を学ぶことができます。これらのスキルを習得することで、開発ワークフローを効率化し、Docker が提供する一貫性のある再現可能な環境、容易なデプロイ、そして向上したスケーラビリティといった利点を活用できるようになります。