※この記事にはアフィリエイトリンクを含みます(PR)

「Dockerってよく聞くけど、Macでどうやって使うの?」「開発環境構築が面倒…」

そんな悩みを抱えていませんか?

私も以前は、新しいプロジェクトを始めるたびに、開発環境を整えるのに何時間も費やしていました。ライブラリのバージョン違いで動かない、OSの違いでエラーが出る…といった経験は数え切れないほどあります。

でも、Dockerを使い始めてから、その悩みが一気に解消されたんです。

この記事では、Macユーザーの私が実際に試して分かった、Dockerの基本から実践までを、初心者の方でも理解できるように、体験ベースで解説します。Dockerを使いこなして、あなたの開発効率を劇的に向上させる第一歩を踏み出しましょう!

Dockerとは?開発現場でなぜ重要視されるのか?

まず、Dockerが一体何なのか、そしてなぜ多くの開発現場で重宝されているのかを理解しましょう。

Dockerは、アプリケーションとその実行に必要な環境(OS、ライブラリ、設定ファイルなど)を「コンテナ」と呼ばれる、独立した小さな箱にパッケージ化する技術です。

例えるなら、Dockerは「どこでも同じように動く、持ち運び可能な開発キット」のようなものです。

これまで、開発環境の構築は、開発者一人ひとりが手作業で行うことが多く、環境差異によるトラブルが頻繁に発生していました。しかし、Dockerを使えば、この「環境構築の手間」と「環境差異によるトラブル」を劇的に減らすことができるのです。

Dockerが開発現場で重要視される理由:

  • 環境構築の簡略化: 必要なものがすべてコンテナに含まれているため、数コマンドで開発環境を再現できます。
  • 環境差異の解消: 開発者間や、開発環境と本番環境での差異による問題をなくせます。
  • ポータビリティ: どんな環境(Mac, Windows, Linux, クラウド)でも同じようにアプリケーションを実行できます。
  • 効率的なデプロイ: アプリケーションのデプロイ(公開)が迅速かつ簡単になります。

これらのメリットにより、Dockerは現代の開発ワークフローにおいて、なくてはならない存在となりつつあります。

MacにDockerをインストールする方法

Dockerを使うためには、まずお使いのMacにDocker Desktopをインストールする必要があります。これが一番簡単な方法なので、まずはこれを使ってみましょう。

  1. Docker Desktop for Macのダウンロード: Dockerの公式サイトにアクセスし、「Docker Desktop」のダウンロードページを見つけます。通常、Intelチップ用とApple Silicon (M1, M2, M3チップなど) 用の2種類がありますので、お使いのMacのチップに合わせてダウンロードしてください。 https://www.docker.com/products/docker-desktop/

  2. インストーラーの実行: ダウンロードした.dmgファイルをダブルクリックして開きます。表示されるインストーラーを指示に従って進めてください。通常は、Docker.appApplicationsフォルダにドラッグ&ドロップするだけです。

  3. Docker Desktopの起動と初期設定: アプリケーションフォルダからDocker Desktopを起動します。初回起動時には、利用規約への同意や、Docker Engineの起動(少し時間がかかります)が行われます。右上のメニューバーにDockerのクジラアイコンが表示されれば、インストールは完了です。

私の体験談:

初めてDocker Desktop for Macをインストールした時は、直感的な操作で迷うことはありませんでした。ダウンロードから起動まで、わずか5分程度だったと記憶しています。

動作確認:

ターミナルを開き、以下のコマンドを入力して、Dockerが正しくインストールされているか確認しましょう。

docker --version

バージョン情報が表示されればOKです。他にも、

docker info

と入力すると、Dockerの詳細な情報が表示されます。

Dockerの基本概念:イメージとコンテナ

Dockerを理解する上で、必ず押さえておきたいのが「イメージ」と「コンテナ」という2つの概念です。

イメージ (Image)

イメージは、コンテナを作成するための「設計図」や「テンプレート」のようなものです。アプリケーションの実行に必要なコード、ランタイム、ライブラリ、環境設定などがすべて含まれています。イメージは読み取り専用であり、変更することはできません。

例えるなら、料理の「レシピ」に近いです。レシピ(イメージ)があれば、誰でも同じ料理(コンテナ)を作ることができます。

Docker Hubなどのイメージリポジトリには、あらかじめ多くのアプリケーション(例えば、WebサーバーのNginxやデータベースのMySQLなど)のイメージが公開されており、誰でも無料でダウンロードして利用できます。

コンテナ (Container)

コンテナは、イメージをもとに作成された「実行可能なインスタンス」です。イメージという設計図をもとに、実際にアプリケーションが動作している「箱」のようなものです。

コンテナは、イメージとは異なり、書き込み可能です。コンテナ内でファイルを作成したり、設定を変更したりすることができます。ただし、コンテナを削除すると、そのコンテナ内の変更内容は失われます(永続化の設定をしない場合)。

料理の「完成品」がコンテナに相当します。レシピ(イメージ)から、実際に作られた料理(コンテナ)です。

イメージとコンテナの関係:

  • イメージは一つですが、それをもとに複数のコンテナを作成できます。
  • コンテナはイメージから作られます。
  • イメージは不変ですが、コンテナは実行中に状態が変化します。

このイメージとコンテナの分離が、Dockerの柔軟性とポータビリティの鍵となります。

簡単なDockerコンテナの作成と実行

それでは、実際にDockerを使って簡単なコンテナを作成し、実行してみましょう。今回は、Webサーバーとしてよく使われるNginxのコンテナを動かしてみます。

1. Nginxイメージの取得

まず、NginxのイメージをDocker Hubからローカルにダウンロードします。ターミナルを開いて、以下のコマンドを実行してください。

docker pull nginx

このコマンドは、Docker Hubから最新のnginxイメージを取得します。ダウンロードには少し時間がかかる場合があります。

2. Nginxコンテナの作成と実行

次に、取得したnginxイメージからコンテナを作成し、起動します。

docker run --name my-nginx -p 8080:80 -d nginx

このコマンドの意味は以下の通りです。

  • docker run: 新しいコンテナを作成して実行するコマンドです。
  • --name my-nginx: 作成するコンテナにmy-nginxという名前を付けます。名前を付けることで、後でコンテナを管理しやすくなります。
  • -p 8080:80: ポートのマッピングを行います。左側の8080はMacのポート、右側の80はコンテナ内のNginxが待ち受けているポートです。これにより、Macの8080ポートにアクセスすると、コンテナ内のNginxに接続できるようになります。
  • -d: コンテナをバックグラウンド(デーモンモード)で実行します。これにより、ターミナルが解放され、他の作業を続けられます。
  • nginx: 使用するイメージの名前です。今回はnginxイメージを使用します。

コマンドを実行すると、何も出力されずにプロンプトが戻ってきます。これは、コンテナがバックグラウンドで正常に起動したことを意味します。

3. Nginxが動作しているか確認

コンテナが起動したら、Webブラウザを開いて、Nginxが動作しているか確認してみましょう。

ブラウザのアドレスバーに http://localhost:8080 と入力してアクセスします。

Docker Nginx Welcome Page

「Welcome to nginx!」という画面が表示されれば、Dockerコンテナ内でNginxが正常に動作しています!

4. コンテナの停止と削除

不要になったコンテナは停止し、削除しておくのが基本です。

  • コンテナの確認: 現在実行中のコンテナを確認するには、以下のコマンドを使います。

    docker ps
    

    my-nginxという名前のコンテナが表示されるはずです。

  • コンテナの停止:

    docker stop my-nginx
    
  • コンテナの削除:

    docker rm my-nginx
    

これらのコマンドで、作成したコンテナを停止・削除できます。

私の体験談:

初めてdocker runコマンドを実行して、ブラウザでNginxのWelcomeページが表示された時の感動は忘れられません。数分で、ローカル環境にWebサーバーが立ち上がったのですから!これは、開発効率を大きく変える可能性を感じさせる瞬間でした。

Dockerfileを使ったカスタムイメージの作成

先ほどは、Docker Hubにある既存のイメージを使いましたが、Dockerの真価は、自分でカスタマイズしたイメージを作成できる点にあります。そのために使うのがDockerfileです。

Dockerfileは、Dockerイメージをビルド(作成)するための一連の命令を記述したテキストファイルです。

Dockerfileの作成例

ここでは、簡単なWebサイト(HTMLファイル)を配置したカスタムイメージを作成してみましょう。

  1. プロジェクトディレクトリの作成: まず、プロジェクト用のフォルダを作成します。

    mkdir my-web-app
    cd my-web-app
    
  2. HTMLファイルの作成: フォルダ内に、簡単なindex.htmlファイルを作成します。

    <!DOCTYPE html>
    <html>
    <head>
        <title>My Custom App</title>
    </head>
    <body>
        <h1>Hello from Docker!</h1>
    </body>
    </html>
    
  3. Dockerfileの作成: 同じフォルダ内にDockerfileという名前のテキストファイルを作成し、以下の内容を記述します。

    # ベースイメージとしてnginxを使用
    FROM nginx
    
    # 現在のディレクトリにあるファイルを、コンテナ内の/usr/share/nginx/htmlにコピーする
    COPY . /usr/share/nginx/html
    
    • FROM nginx: nginxイメージをベースとして使用します。
    • COPY . /usr/share/nginx/html: 現在のディレクトリ(Dockerfileがある場所)にあるすべてのファイル(index.htmlなど)を、コンテナ内のNginxのWebルートディレクトリにコピーします。
  4. イメージのビルド: ターミナルで、Dockerfileがあるディレクトリ(my-web-app)にいることを確認し、以下のコマンドを実行します。

    docker build -t my-custom-nginx .
    
    • docker build: Dockerイメージをビルドするコマンドです。
    • -t my-custom-nginx: 作成するイメージにmy-custom-nginxという名前(タグ)を付けます。通常、名前:バージョンの形式で指定しますが、ここではシンプルに名前だけです。
    • .: Dockerfileがある現在のディレクトリを指定します。

    ビルドが完了すると、my-custom-nginxという名前のイメージが作成されます。

  5. カスタムイメージの実行: 作成したイメージからコンテナを起動します。Nginxのデフォルトポートは80なので、Macのポート8080にマッピングしましょう。

    docker run --name my-cus
    

※この記事にはアフィリエイトリンクを含みます(PR)

この記事で紹介したツール・書籍

アフィリエイト入門書を見る — アフィリエイトの始め方 — 初心者向け実践ガイド