はじめに
Docker は、アプリケーションの開発、デプロイ、管理方法を革新しました。この包括的なチュートリアルでは、コンテナとイメージの構築、デプロイから監視、トラブルシューティングまで、Docker コンテナを効果的に管理する方法を学びます。Docker ユーザーの経験レベルが初心者であろうとベテランであろうと、このガイドは Docker コンテナ管理の技術を習得するための必須スキルを提供します。
Docker コンテナの概要
Docker とは何か?
Docker は、開発者がコンテナ化された環境でアプリケーションを構築、デプロイ、実行するためのオープンソースプラットフォームです。コンテナは、アプリケーションのコード、依存関係、ランタイム環境をパッケージ化した軽量で移植可能な自己完結型のユニットであり、異なるコンピューティング環境間でのアプリケーションの移動を容易にします。
Docker コンテナの利点
- 一貫性: Docker コンテナは、基盤となるインフラストラクチャに関係なく、アプリケーションが同じ方法で実行されることを保証します。
- スケーラビリティ: コンテナは、変化する需要に対応するために容易にスケールアップまたはスケールダウンできます。
- 効率性: コンテナは従来の仮想マシンよりも軽量で、リソースをより少なく使用します。
- 移植性: Docker コンテナは、Docker ランタイムをサポートするあらゆるシステムで実行できるため、アプリケーションを異なる環境間で簡単に移動できます。
Docker アーキテクチャ
Docker はクライアント・サーバーアーキテクチャを採用しており、Docker クライアントは Docker デーモン(サーバー)と通信して、コンテナの構築、実行、管理などの様々な操作を実行します。
graph LD
subgraph Docker アーキテクチャ
client[Docker クライアント]
daemon[Docker デーモン]
registry[Docker レジストリ]
client -- 通信 --> daemon
daemon -- pull/push --> registry
end
Docker コンポーネント
- Docker イメージ: Docker イメージは、コンテナの構成要素です。アプリケーションコード、依存関係、ランタイム環境を含んでいます。
- Docker コンテナ: コンテナは、Docker イメージの実行インスタンスです。分離性、軽量性、移植性を備えています。
- Docker レジストリ: Docker レジストリは、Docker イメージの保存と配布システムです。最も一般的なレジストリは、Docker 社が提供するパブリックレジストリである Docker Hub です。
Docker の開始
Docker を開始するには、システムに Docker ランタイムをインストールする必要があります。Docker は公式 Docker ウェブサイト (https://www.docker.com/get-started) からダウンロードしてインストールできます。
Docker をインストールしたら、Docker コンテナを探索して使用し始めることができます。次のセクションでは、Docker イメージの管理方法を学びましょう。
Docker イメージの管理
Docker イメージのプル
レジストリから Docker イメージをプルするには、docker pull コマンドを使用します。
docker pull ubuntu:22.04
これにより、Docker Hub レジストリから ubuntu:22.04 イメージがプルされます。
Docker イメージのビルド
Dockerfile を使用して独自の Docker イメージをビルドできます。Dockerfile は、イメージのビルド手順を含むテキストファイルです。以下の Dockerfile が例です。
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
イメージをビルドするには、以下のコマンドを実行します。
docker build -t my-nginx-app .
これにより、my-nginx-app という名前の新しい Docker イメージが作成されます。
Docker イメージのリスト表示
システム上のすべての Docker イメージをリスト表示するには、docker images コマンドを使用します。
docker images
これにより、各イメージの名前、タグ、イメージ ID、作成日時、サイズなどに関する情報を含む表が表示されます。
Docker イメージのタグ付け
Docker イメージにタグを追加して、整理および管理することができます。イメージにタグを追加するには、docker tag コマンドを使用します。
docker tag my-nginx-app:latest my-nginx-app:v1.0
これにより、my-nginx-app イメージに新しいタグ v1.0 が作成されます。
Docker イメージのプッシュ
Docker イメージを構築してタグ付けしたら、docker push コマンドを使用してレジストリにプッシュできます。
docker push my-nginx-app:v1.0
これにより、my-nginx-app:v1.0 イメージがデフォルトのレジストリ(Docker Hub)にプッシュされます。
Docker イメージの削除
Docker イメージを削除するには、docker rmi コマンドを使用します。
docker rmi my-nginx-app:v1.0
これにより、my-nginx-app:v1.0 イメージがシステムから削除されます。
Docker イメージの管理方法を学んだので、次のセクションでは Docker コンテナの実行とデプロイ方法を学びましょう。
Docker コンテナの実行とデプロイ
Docker コンテナの実行
Docker コンテナを実行するには、docker run コマンドを使用します。
docker run -d -p 80:80 my-nginx-app
これにより、my-nginx-app イメージに基づいた新しいコンテナが起動し、ホストのポート 80 がコンテナのポート 80 にマッピングされます。
-it フラグを使用して対話型のコンテナを実行することもできます。
docker run -it ubuntu:22.04 /bin/bash
これにより、対話型の Ubuntu コンテナが起動し、コンテナ内部でシェルプロンプトが表示されます。
実行中のコンテナの管理
実行中のすべてのコンテナをリスト表示するには、docker ps コマンドを使用します。
docker ps
実行中のコンテナを停止するには、docker stop コマンドを使用します。
docker stop my-nginx-app
停止したコンテナを起動するには、docker start コマンドを使用します。
docker start my-nginx-app
コンテナログへのアクセス
実行中のコンテナのログを表示するには、docker logs コマンドを使用します。
docker logs my-nginx-app
これにより、my-nginx-app コンテナのログが表示されます。
コンテナ内でのコマンドの実行
実行中のコンテナ内でコマンドを実行するには、docker exec コマンドを使用します。
docker exec -it my-nginx-app /bin/bash
これにより、my-nginx-app コンテナ内で対話型のシェルセッションが起動します。
Docker コンテナのデプロイ
本番環境で Docker コンテナをデプロイするには、Docker Compose や Kubernetes などのツールを使用できます。これらのツールは、複数のコンテナとその依存関係を管理およびオーケストレーションするのに役立ちます。
シンプルな Docker Compose ファイルの例を次に示します。
version: "3"
services:
web:
image: my-nginx-app
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
この設定をデプロイするには、docker-compose up コマンドを使用します。
Docker Compose や Kubernetes を使用することで、コンテナ化された環境でアプリケーションを簡単にスケール、管理、デプロイできます。
まとめ
このチュートリアルでは、Docker コンテナとイメージの管理の基本を学びました。Docker ベースのアプリケーションを構築、デプロイ、保守する方法を理解し、スムーズかつ効率的に動作させることができるようになりました。Docker の力を活用することで、開発およびデプロイプロセスを効率化し、生産性とスケーラビリティを高めることができます。Docker をさらに探求し、実験することで、スキルを向上させ、この革新的なテクノロジーの潜在能力を最大限に引き出すことができます。



