編集済み 5 数か月前 によって ExtremeHow 編集チーム
ドッカーコンテナアプリケーションデプロイメントドッカーコンポーズオーケストレーション設定スクリプティングデブオプスコマンドラインマルチコンテナ
翻訳が更新されました 5 数か月前
Docker Composeは、複数コンテナのDockerアプリケーションを定義して実行するためのツールです。Docker Composeを使用すると、YAMLファイルを使ってアプリケーションのサービスを設定し、単一のコマンドで設定からすべてのサービスを作成して開始できます。これは、多くのリンクされたサービスを含む複雑なアプリケーションを扱う際に非常に役立ちます。このガイドの目的は、Linux上でDocker Composeを使用する方法を非常に詳細に説明することです。
Docker Composeに飛び込む前に、Dockerとは何かを理解することが重要です。Dockerは、開発者とシステム管理者がアプリケーションをコンテナにパッケージ化できるプラットフォームであり、これはアプリケーションのソースコードと、そのコードをどの環境でも実行するために必要なオペレーティングシステムのライブラリと依存関係を組み合わせた標準化された実行可能コンポーネントです。
Docker Composeはこれをさらに一歩進め、複数のDockerコンテナを単一のサービスとして設定して起動できるようにします。つまり、docker-compose.yml
という単純なファイルを使ってアプリケーションのすべての依存関係を管理できます。このファイルには、どのイメージを実行するか、どのポートを公開するか、ボリュームマッピングなどについての情報が含まれています。
Docker Composeを使用する最初のステップは、DockerがLinuxマシンにインストールされて実行されていることを確認することです。ほとんどの最新のLinuxディストリビューションにはDockerが公式リポジトリに含まれていますが、Dockerの公式リポジトリからインストールして最新バージョンを入手することもできます。
# 署名付きHTTPS経由でリポジトリを使用できるように、aptパッケージのインデックスを更新してインストール
sudo apt-get update -y
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common -y
# Dockerの公式GPGキーを追加して確認
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 安定版リポジトリを設定
sudo add-apt-repository \
"deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
# Docker CEをインストール
sudo apt-get update -y
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
# Dockerインストールを確認
sudo docker run hello-world
Dockerがインストールされたら、次のステップはDocker Composeのインストールです。Dockerとは異なり、Composeは別のツールです。GitHubのリリースページからDocker Composeをダウンロードできます。
# Docker Composeの現在の安定版をダウンロード
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# バイナリに実行権限を付与
sudo chmod +x /usr/local/bin/docker-compose
# Docker Composeが正しくインストールされていることを確認
docker-compose --version
docker-compose.yml
ファイルはDocker Composeを使用するための中心です。ここで、すべてのサービス(つまり、アプリケーションのコンテナ)とそれらの相互作用を定義します。docker-compose.yml
ファイルの構造は非常にシンプルです。一般的には、使用するComposeのバージョンを定義することから始まり、その後にサービスのリストが続きます。
以下は基本的なdocker-compose.yml
ファイルの例です:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
database:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
上記の例では、Composeファイルはバージョン3.8を使用し、web
とdatabase
という2つのサービスを定義しています。web
サービスはNginxイメージを使用し、コンテナのポート80をホストのポート80にマッピングします。database
サービスは、指定されたルートパスワードでMySQLイメージを使用します。
docker-compose.yml
ファイルを設定したら、マルチサービスアプリケーションを単純なコマンドで実行できます。docker-compose.yml
ファイルを含むディレクトリに移動し、以下を実行します:
docker-compose up
docker-compose up
コマンドは、現在のディレクトリにあるdocker-compose.yml
ファイルを探し、ローカルに存在しない場合は必要なイメージを作成し、定義されたサービスを開始します。
アプリケーションをバックグラウンド(非表示モード)で実行したい場合は、-d
オプションを使用します:
docker-compose up -d
Docker Composeは、環境を管理するためのいくつかのコマンドを提供します:
docker-compose ps
: Composeファイルで定義されたサービスのステータスを表示します。docker-compose start
: サービスの既存のコンテナを開始します。docker-compose stop
: コンテナを実行中の状態から停止しますが、削除はしません。docker-compose down
: docker-compose.yml
ファイルで定義されたすべてのコンテナを停止し、削除します。docker-compose logs
: サービスのログを取得します。Docker Composeでは、docker-compose.yml
ファイルでボリュームとネットワークを定義することもできます。ボリュームはデータを永続化するために使用され、ネットワークはサービス間の通信を支援します。
ボリュームを定義するには、Servicesセクションの下に次を追加します:
services:
database:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
この設定は、db_data
という名前のボリュームを作成し、/var/lib/mysql
内のデータベースサービスコンテナにマウントし、MySQLデータを保存します。
ネットワークもカスタマイズできます:
services:
frontend:
image: node:14
networks:
- frontend-network
backend:
image: node:14
networks:
- backend-network
networks:
frontend-network:
backend-network:
Docker Composeの強力な機能の1つは、サービスをスケーリングする能力です。これは、開発環境でのより現実的な条件をシミュレートするのに特に役立ちます。--scale
オプションを使用してサービスをスケーリングできます。
docker-compose up --scale web=3
上記のコマンドは、web
サービスのインスタンスを3つ開始します。
実行中のサービス内で任意のコマンドを実行することができます:
docker-compose exec web bash
このコマンドは、実行中のweb
サービスコンテナ内でbashシェルを開きます。
デフォルトでは、Docker Composeはサービスごとにデフォルトネットワークを作成しますが、すべてのサービスを同じネットワークにバインドすることもできます。
version: '3.8'
services:
web:
image: nginx:latest
networks:
- custom-network
database:
image: mysql:5.7
networks:
- custom-network
networks:
custom-network:
web
とdatabase
サービスはどちらもcustom-network
に接続され、独立して通信することができます。
Docker Composeは、マルチコンテナのDockerアプリケーションを管理するプロセスを簡素化する強力なツールです。docker-compose.yml
ファイルでサービスを定義することにより、アプリケーションスタックをすばやくデプロイして管理できます。Docker Composeを効果的に使用する鍵は、docker-compose.yml
ファイルの構成オプションを理解することです。これには、サービス、ボリューム、およびネットワークが含まれます。
この包括的なガイドは、Linux上でのDocker Composeのセットアップ方法、Composeファイルの作成、およびアプリケーションの管理方法を概観します。この知識を活用してDocker Composeを適切に使用することで、複雑なLinuxベースの環境を簡単に管理できます。自身のアプリケーションで練習して、Docker Compose構成を特定のニーズに合わせるための経験を積んでください。
記事の内容に誤りがある場合, あなたは