'Hello World' Docker コンテナの作成と実行方法

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

はじめに

Docker は、開発者がアプリケーションを構築、デプロイ、管理する方法を革新した強力なコンテナ化プラットフォームです。このチュートリアルでは、Docker を学ぶための優れた出発点となる、シンプルな「Hello World」Docker コンテナの作成と実行の手順を案内します。

Docker の概要

Docker は、開発者がコンテナ化された環境でアプリケーションを構築、デプロイ、実行するための、人気のオープンソースプラットフォームです。コンテナは、アプリケーションの実行に必要なコード、ランタイム、システムツール、ライブラリなど、すべてが含まれた軽量で独立した実行可能なソフトウェアパッケージです。

Docker とは何か?

Docker は、コンテナを使用してアプリケーションの作成、デプロイ、実行を容易にするツールです。コンテナを使用すると、開発者はアプリケーションに必要なライブラリやその他の依存関係など、すべての構成要素をパッケージ化し、単一のソフトウェアパッケージとして配布できます。

Docker アーキテクチャ

Docker アーキテクチャは、以下の主要なコンポーネントで構成されています。

graph TD
    A[Docker クライアント] --> B[Docker デーモン]
    B --> C[Docker イメージ]
    B --> D[Docker コンテナ]
    B --> E[Docker レジストリ]
  • Docker クライアント: Docker システムと対話するためのユーザーインターフェース。
  • Docker デーモン: イメージ、コンテナ、ネットワーク、ボリュームなどの Docker オブジェクトを管理するバックグラウンドプロセス。
  • Docker イメージ: Docker コンテナを作成するための設計図。
  • Docker コンテナ: Docker イメージの実行可能なインスタンス。
  • Docker レジストリ: Docker イメージを保存および配布するためのリポジトリ。

Docker の利点

  • 一貫性: Docker は、基盤となるインフラストラクチャに関係なく、アプリケーションが同じ方法で実行されることを保証します。
  • スケーラビリティ: Docker コンテナは、アプリケーションのリソース要件に基づいて容易にスケールアップまたはスケールダウンできます。
  • 移植性: Docker コンテナは、基盤となるオペレーティングシステムに関係なく、Docker がインストールされている任意のコンピュータ上で実行できます。
  • 効率性: Docker コンテナは軽量であり、従来の仮想マシンと比較して、少ないリソースを使用します。

Docker の開始

Docker を開始するには、システムに Docker エンジンをインストールする必要があります。公式 Docker ウェブサイト (https://www.docker.com/get-started) から Docker をダウンロードしてインストールできます。インストール後、アプリケーションを構築および実行するために Docker を使用できます。

"Hello World" Docker コンテナの構築

このセクションでは、シンプルな "Hello World" Docker コンテナの構築方法を学びます。

Dockerfile の作成

Dockerfile は、Docker イメージを構築するための指示が含まれたテキストファイルです。シンプルな Dockerfile を作成しましょう。

## 公式 Ubuntu 22.04 イメージをベースイメージとして使用
FROM ubuntu:22.04

## 作業ディレクトリを /app に設定
WORKDIR /app

## "hello.sh" スクリプトをコンテナにコピー
COPY hello.sh .

## スクリプトの実行権限を設定
RUN chmod +x hello.sh

## コンテナ起動時にスクリプトを実行するコマンドを定義
CMD ["./hello.sh"]

この Dockerfile では、以下の手順を実行しています。

  1. 公式 Ubuntu 22.04 イメージをベースイメージとして使用します。
  2. 作業ディレクトリを /app に設定します。
  3. "hello.sh" スクリプトをコンテナにコピーします。
  4. スクリプトの実行権限を設定します。
  5. コンテナ起動時にスクリプトを実行するコマンドを定義します。

Docker イメージの構築

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

docker build -t hello-world .

このコマンドは、タグ "hello-world" を持つ Docker イメージを構築します。

イメージの確認

システム上のすべての Docker イメージをリストするには、以下のコマンドを実行します。

docker images

"hello-world" イメージがリストに表示されるはずです。

"Hello World" コンテナの実行と探索

"hello-world" Docker イメージを構築したので、コンテナを実行し、探索してみましょう。

コンテナの実行

"hello-world" コンテナを実行するには、以下のコマンドを使用します。

docker run hello-world

このコマンドは、コンテナを起動し、Dockerfile で定義されたコマンド(つまり、"hello.sh" スクリプトの実行)を実行します。

出力は次のようになります。

Hello, LabEx!

コンテナの探索

実行中のコンテナを様々な Docker コマンドを使って探索できます。

  1. 実行中のコンテナのリスト:

    docker ps
    

    これにより、システム上で実行中のコンテナが表示されます。

  2. コンテナの検査:

    docker inspect hello-world
    

    これにより、コンテナの構成、ネットワーク設定など、詳細な情報が表示されます。

  3. コンテナのログの表示:

    docker logs hello-world
    

    これにより、コンテナ内で実行された "hello.sh" スクリプトの出力が表示されます。

  4. 実行中のコンテナ内でコマンドを実行:

    docker exec -it hello-world /bin/bash
    

    これにより、実行中のコンテナ内でインタラクティブなセッションを開始し、コンテナのファイルシステムを探索したり、追加のコマンドを実行したりできます。

コンテナの停止と削除

実行中のコンテナを停止するには、以下のコマンドを使用します。

docker stop hello-world

コンテナを削除するには、以下のコマンドを使用します。

docker rm hello-world

これにより、"hello-world" コンテナがシステムから停止および削除されます。

まとめ

このチュートリアルでは、'Hello World' Docker コンテナを作成および実行する方法を学びました。Docker コンテナの基本的な概念を理解することで、この強力な技術を習得するための第一歩を踏み出しました。Docker は、アプリケーションとその依存関係をポータブルで自己完結型のユニットにパッケージ化することで、さまざまな環境間でソフトウェアの開発、デプロイ、管理を容易にします。このチュートリアルで得られた知識を基に、より高度な Docker の概念を探索し、独自のコンテナ化されたアプリケーションの構築を開始できます。