← ハンズオン一覧に戻る

Container Hands-on / Docker Basics

はじめてのコンテナを、
起動して観察する

Docker は、アプリケーションを「コンテナ」という単位でパッケージ化し、どこでも同じように動かせる仕組みです。公開されているイメージを取得してコンテナを起動し、動きを観察するところから始めます。

● Lv.1 AWSを触りはじめた人 ⏱ 所要 20〜35 分 ローカルのDocker操作のみ(AWS未使用)
01 — Prerequisites

はじめる前に

  • 必須お使いのパソコンに Docker Desktop をインストールできること(Windows / Mac対応)
  • 必須ターミナル(PowerShellまたはコマンドプロンプト)を開いて文字を入力できること
  • あると良い「サーバー」「ポート番号」という言葉のイメージがある

※ このハンズオンは AWSのリソースを一切使いません。お使いのパソコンの中だけで完結します。

02 — References

参照する公式ドキュメント

手順に迷ったときや、用語の意味を確かめたいときに開きましょう。

※ Docker社の公式ドキュメント(英語)です。リンク切れの場合は、ページタイトルで検索してください。

03 — Background

背景・シナリオ

アプリケーションを別のパソコンやサーバーで動かそうとすると、「自分の環境では動くのに、他の環境では動かない」という問題によく出くわします。これは、OSのバージョンやインストールされているソフトウェアの違いが原因で起こります。

Docker は、アプリケーションと、それを動かすために必要なものをまとめて「イメージ」というパッケージにし、そこから「コンテナ」という実行単位を起動する仕組みです。今回は、公開されているWebサーバーのイメージ(nginx)を取得し、コンテナとして起動して、基本的な操作の流れをひととおり体験します。

「イメージ」と「コンテナ」は何が違うの?

イメージは、アプリケーションと実行環境をまとめた「設計図」です。コンテナは、その設計図から実際に起動した「動いている実体」です。同じイメージから、複数のコンテナを起動することもできます。

コンテナを停止したら、中の状態はどうなるの?

停止しただけであれば、コンテナ自体は残っており、後から再開できます。完全に消したい場合は、停止に加えて「削除」という操作が別に必要です。今回はこの違いも確認します。

Goal

公開イメージ(nginx)を取得してコンテナとして起動し、ブラウザでアクセスする。起動中のログを確認したうえで、コンテナを停止・削除するまでの基本操作をひととおり体験する。

04 — Flow

つくる流れ

「取得する」→「起動する」→「観察する」→「片付ける」という、コンテナ操作の基本サイクルを体験します。

📥 pull イメージを取得
▶️ run コンテナを起動
🔍 logs / ps 状態を観察
🗑️ stop / rm 後片付け
05 — Requirements

要件

以下の要件を満たし、コンテナの基本操作を体験してください。

No要件
1Docker Desktopをインストールして起動し、docker --version でバージョンが表示されることを確認する。
2公開イメージ nginx を取得(pull)する。
3取得したイメージからコンテナを起動し、ブラウザでアクセスして既定のページが表示されることを確認する。
4起動中のコンテナの一覧と、ログの内容を確認する。
5コンテナを停止し、削除する。削除後、一覧に表示されなくなることを確認する。
06 — Steps

構築の進め方

「Docker Desktopを準備する」→「イメージを取得して起動する」→「状態を観察する」→「停止・削除する」という順番で進めます。

  1. フェーズ1 — Docker Desktopを準備する
  2. Docker Desktopをインストールし、起動する

    お使いのパソコンにDocker Desktopをインストールし、起動します。起動が完了したら、ターミナル(PowerShellなど)を開き、次のコマンドでバージョンが表示されることを確認します。

    docker --version
  3. フェーズ2 — イメージを取得して起動する
  4. 公開イメージ(nginx)を取得する

    次のコマンドで、Webサーバーの公開イメージを取得します。

    docker pull nginx
  5. コンテナを起動する

    取得したイメージから、名前を付けてコンテナを起動します。パソコンの8080番ポートを、コンテナの80番ポートにつなぎます。

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

    ブラウザで http://localhost:8080 を開き、「Welcome to nginx!」のページが表示されることを確認します。

  6. フェーズ3 — 状態を観察する
  7. 起動中のコンテナを確認する

    docker ps

    一覧に my-first-nginx が表示され、ステータスが起動中になっていることを確認します。

  8. ログを確認する

    docker logs my-first-nginx

    ブラウザでアクセスした際のリクエストの記録が、ログに残っていることを確認します。

    ブラウザをもう一度開いてみる

    ログを確認した後にブラウザで再度アクセスし、もう一度 docker logs を実行すると、新しい行が追加されていることが分かります。

  9. フェーズ4 — 停止・削除する
  10. コンテナを停止し、削除する

    docker stop my-first-nginx
    docker rm my-first-nginx

    停止と削除を分けて実行している点に注目してください。停止だけでは、コンテナは一覧(docker ps -a)に残ったままです。

    これがゴール

    docker ps -a を実行し、my-first-nginx が一覧から消えていることを確認できたら、このハンズオンの目的は達成です。

07 — Pitfalls

つまずきポイント

初学者がよく引っかかる箇所を先回りでまとめました。答えそのものは載せていませんが、「どこを見直すか」の手がかりとして使ってください。

Pitfall 01 — コンテナの起動でエラーになる

「docker runを実行すると、ポートに関するエラーが表示される」

パソコンの8080番ポートが、別のアプリケーションで既に使われていないかを見直しましょう。-p オプションのホスト側の番号(左側)を別の番号に変えることでも解決できます。

Pitfall 02 — ブラウザでアクセスできない

「http://localhost:8080 を開いても何も表示されない」

Docker Desktopがきちんと起動しているか、docker ps でコンテナのステータスが起動中になっているかを見直しましょう。

08 — Checklist

完了チェック

要件の再確認ではなく、画面・ターミナルのどこを見れば達成を確認できるかをまとめました。次を順に確かめましょう。

  • docker --version でバージョン番号が表示される。
  • ブラウザで http://localhost:8080 を開くと、nginxの既定ページが表示される。
  • docker ps の一覧に、起動中のコンテナ名が表示される。
  • docker logs の出力に、ブラウザからのアクセス記録が表示される。
  • docker rm 実行後、docker ps -a の一覧からコンテナが消えている。
09 — Think

考えてみよう

手を動かすことに加えて、次の問いに自分の言葉で答えられるようにしておくと、理解がより深まります。

  1. 同じイメージから、もう1つコンテナを同時に起動しようとすると、何が起きるでしょうか。
    ヒント
    コンテナ名やポート番号を今回と同じ値のまま指定した場合、何と何が重複してしまうか考えてみましょう。
  2. コンテナの「停止」と「削除」を、わざわざ別の操作にしているのはなぜでしょうか。
    ヒント
    一時的に止めておいて後で同じ状態から再開したい場合と、完全に消してしまいたい場合、それぞれの場面を想像してみましょう。
  3. 「同じイメージなら、どのパソコンでも同じように動く」と言われるのはなぜでしょうか。
    ヒント
    イメージの中に何が含まれているか(アプリケーション本体だけか、それ以外も含むか)という観点で考えてみましょう。
10 — Clean up

後片づけ

本編の中で削除し忘れたものがあれば、ここで確認します。

  1. コンテナを削除する:本編のフェーズ4で削除済みの場合は不要です。docker ps -a で残っていないか確認してください。
  2. 不要であればイメージも削除する:今後使わない場合は、docker rmi nginx で取得したイメージを削除できます。
  3. Docker Desktopについて:次のハンズオンでも使うため、終了せずそのままにしておいて構いません。

コストに関する注意: このハンズオンではAWSのリソースを作成していないため、料金はかかりません。Docker Desktopは個人利用や小規模なチームでの利用では無料ですが、一定規模以上の組織での利用には別途ライセンスが必要になる場合があります。組織で利用する場合は、Docker社の利用規約を確認してください。