はじめに
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 では、以下の手順を実行しています。
- 公式 Ubuntu 22.04 イメージをベースイメージとして使用します。
- 作業ディレクトリを
/appに設定します。 - "hello.sh" スクリプトをコンテナにコピーします。
- スクリプトの実行権限を設定します。
- コンテナ起動時にスクリプトを実行するコマンドを定義します。
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 コマンドを使って探索できます。
実行中のコンテナのリスト:
docker psこれにより、システム上で実行中のコンテナが表示されます。
コンテナの検査:
docker inspect hello-worldこれにより、コンテナの構成、ネットワーク設定など、詳細な情報が表示されます。
コンテナのログの表示:
docker logs hello-worldこれにより、コンテナ内で実行された "hello.sh" スクリプトの出力が表示されます。
実行中のコンテナ内でコマンドを実行:
docker exec -it hello-world /bin/bashこれにより、実行中のコンテナ内でインタラクティブなセッションを開始し、コンテナのファイルシステムを探索したり、追加のコマンドを実行したりできます。
コンテナの停止と削除
実行中のコンテナを停止するには、以下のコマンドを使用します。
docker stop hello-world
コンテナを削除するには、以下のコマンドを使用します。
docker rm hello-world
これにより、"hello-world" コンテナがシステムから停止および削除されます。
まとめ
このチュートリアルでは、'Hello World' Docker コンテナを作成および実行する方法を学びました。Docker コンテナの基本的な概念を理解することで、この強力な技術を習得するための第一歩を踏み出しました。Docker は、アプリケーションとその依存関係をポータブルで自己完結型のユニットにパッケージ化することで、さまざまな環境間でソフトウェアの開発、デプロイ、管理を容易にします。このチュートリアルで得られた知識を基に、より高度な Docker の概念を探索し、独自のコンテナ化されたアプリケーションの構築を開始できます。



