はじめに
Docker は、開発者がアプリケーションを一貫した隔離された環境でパッケージ化およびデプロイするための一般的なコンテナ化プラットフォームです。このチュートリアルでは、カスタム Docker イメージを作成し、そのイメージに基づいて Docker コンテナを実行する方法を学習します。このガイドの終わりまでに、アプリケーションの Docker コンテナの作成、管理、実行のプロセスをしっかりと理解しているでしょう。
Docker コンテナの理解
Docker は、開発者がコンテナ化された環境でアプリケーションを構築、デプロイ、実行するための一般的なオープンソースプラットフォームです。コンテナは、コード、ランタイム、システムツール、ライブラリなど、アプリケーションの実行に必要なすべてを含んだ、軽量で独立した実行可能なソフトウェアパッケージです。
Docker コンテナとは?
Docker コンテナは、コードとその依存関係をすべてパッケージ化し、アプリケーションを迅速かつ確実に異なるコンピューティング環境間で実行できるようにする標準化されたソフトウェアユニットです。コンテナは、コンテナを作成するための設計図である Docker イメージから作成されます。
graph LR
A[Docker イメージ] --> B[Docker コンテナ]
B[Docker コンテナ] --> C[実行中のアプリケーション]
Docker コンテナの利点
Docker コンテナは、従来の仮想化手法に比べていくつかの利点を提供します。
| 利点 | 説明 |
|---|---|
| ポータビリティ | コンテナは、基盤となるインフラストラクチャに関係なく、あらゆるマシン上で一貫して実行できます。 |
| 効率性 | コンテナはホストオペレーティングシステムを共有するため、仮想マシンよりも軽量で効率的です。 |
| 一貫性 | コンテナは、環境に関係なく、アプリケーションが常に同じように実行されることを保証します。 |
| スケーラビリティ | コンテナは、変化する需要に対応するために、簡単にスケールアップまたはスケールダウンできます。 |
Docker コンテナのライフサイクル
Docker コンテナのライフサイクルには、次の段階が含まれます。
- ビルド: Dockerfile から Docker イメージを作成する。
- シップ: Docker Hub などのレジストリに Docker イメージを保存する。
- 実行: Docker イメージから新しいコンテナを起動する。
- 管理: 実行中のコンテナを監視、スケール、維持する。
Docker コンテナの基本を理解することで、カスタム Docker イメージの構築に進めることができます。
カスタム Docker イメージの構築
カスタム Docker イメージを構築するには、イメージの構築手順を記述したテキストファイルである Dockerfile を作成する必要があります。
Dockerfile の作成
ここでは、Ubuntu 22.04 ベースイメージに基づいてカスタムイメージを構築し、Apache Web サーバーをインストールする例を示す Dockerfile です。
## Ubuntu 22.04 ベースイメージを使用
FROM ubuntu:22.04
## パッケージインデックスを更新し、Apache をインストール
RUN apt-get update && apt-get install -y apache2
## コンテナ起動時のデフォルトコマンドを設定
CMD ["apache2ctl", "-D", "FOREGROUND"]
Docker イメージの構築
Dockerfile から Docker イメージを構築するには、Dockerfile と同じディレクトリで以下のコマンドを実行します。
docker build -t my-apache-image .
このコマンドは、Dockerfile の指示に基づいて、新しい Docker イメージ my-apache-image を作成します。
Docker イメージの確認
イメージを構築したら、以下のコマンドを使用してシステム上のすべてのイメージをリストできます。
docker images
これにより、作成した my-apache-image を含む Docker イメージのリストが表示されます。
また、以下のコマンドを使用してイメージの詳細を確認することもできます。
docker inspect my-apache-image
これにより、Docker イメージのメタデータと設定が表示されます。
これでカスタム Docker イメージができましたので、このイメージに基づいてコンテナを実行する手順に進みます。
カスタムイメージからの Docker コンテナの実行
カスタム Docker イメージが作成できたら、そのイメージに基づいてコンテナを実行できます。
Docker コンテナの起動
my-apache-image イメージから新しいコンテナを起動するには、以下のコマンドを使用します。
docker run -d -p 80:80 --name my-apache-container my-apache-image
各部分の説明は以下の通りです。
docker run: 新しい Docker コンテナを起動します。-d: コンテナをバックグラウンドで実行するデタッチモードで実行します。-p 80:80: ホストのポート 80 をコンテナのポート 80 にマッピングします。これにより、ホストから Web サーバーにアクセスできます。--name my-apache-container: 実行中のコンテナに名前 "my-apache-container" を割り当てます。my-apache-image: コンテナで使用するための Docker イメージの名前です。
実行中のコンテナの確認
コンテナを起動したら、以下のコマンドを使用して実行中であることを確認できます。
## 全ての実行中のコンテナをリスト表示
docker ps
## コンテナの詳細を表示
docker inspect my-apache-container
docker ps コマンドは、起動した my-apache-container を含む実行中のコンテナのリストを表示します。
docker inspect コマンドは、実行中のコンテナの詳細情報(IP アドレス、ポートマッピング、その他の構成情報など)を提供します。
Web サーバーへのアクセス
コンテナが実行されると、Web ブラウザを開き、http://localhost にアクセスすることで Apache Web サーバーにアクセスできます。デフォルトの Apache ウェルカムページが表示されるはずです。
カスタムイメージに基づいた Docker コンテナの実行方法を理解することで、独自のアプリケーションをコンテナ化された環境でデプロイできます。
まとめ
このチュートリアルでは、カスタム Docker イメージを作成し、そのイメージに基づいて Docker コンテナを実行する方法を学びました。Dockerfile を記述し、イメージを構築する手順を詳しく探求しました。さらに、カスタムイメージを使用して Docker コンテナを実行し、コンテナのライフサイクルを管理し、実行中のコンテナにアクセスする方法を学びました。これらのスキルを習得することで、Docker コンテナを使用してアプリケーションを確実にパッケージ化およびデプロイできるようになりました。



