Docker Composeは、Dockerを日常的によく使う人程役立つツールです。多くのDockerコンテナを操作する必要があるケースでは、Docker Composeを使うことで作業の負担が大幅に軽減されます。一方で、Docker Composeとは何かや使い方について知らない方も多いのではないでしょうか。
この記事ではDocker Composeの概要と、インスト―ル方法を解説しています。その上で基本的な使い方についても紹介しているので、これからDocker Composeの利用を検討している方は是非参考にして下さい。
※KAGOYA CLOUD VPSをご利用の場合、Docker Composeはテンプレートとして即時利用が可能です。
目次
Docker Composeとは
Docker Composeとは、複数のコンテナを効率的に操作するためのツールです。
Docker Composeを使う場合、「compose.yaml」という名前のファイルに、各コンテナに対する設定をあらかじめ定義しておきます。
その上で専用コマンドを実行することにより、定義した内容に従い複数コンテナを一括で同時に起動させることができるのです。
DockerとDocker Composeの違い・関係性
Dockerとは、Dockerコンテナを運用するためのプラットフォームです。ただDockerが標準で搭載しているDocker Engineでは、1度に1つずつしかDockerコンテナを操作できません。
一方でDocker Composeは、複数のDockerコンテナを1度に操作できるツールです。Docker上でDocker Composeを使えば、Dockerコンテナが複数存在する環境でも操作がしやすくなります。
Docker Composeを使うメリット
Docker Composeによって、複数のコンテナを1度に操作できるようになることを紹介しました。それではDocker Composeを使うことによって、どのようなメリットがあるでしょうか。以下、主なメリットを1つずつみていきましょう。
複数コンテナを簡単・効率的に管理・実行できるようになる
WebサーバーとSQLサーバーを使う場合など、複数のDockerコンテナを同時に起動させる必要があるケースも多いです。Dockerは、そのままでは1度に1つずつしか操作ができません。
Dockerで複数のDockerコンテナを起動させるためには、その分だけコマンドを別々に実行する必要があります。その作業が1度きりであれば負担にならないかもしれませんが、何度も同じ作業を繰り返す場合は、作業が煩雑となり負担も増えるのです。
一方でDocker Composeでは、あらかじめcompose.yaml上に複数のDockerコンテナを起動させる定義をしておくことができます。次回からは、compose.yamlを使い、たった1つのコマンドで複数のコンテナを起動すればよいわけです。これによって複数コンテナを簡単・効率的に管理・実行できるようになります。
コンテナを運用する際のミスを軽減できる
Dockerだけでは、複数のコンテナを操作する作業が煩雑になるのは前述した通りです。その状態のままで運用を続けた場合、ミスが発生する可能性が高くなるのは言うまでもありません。その点、Docker Composeを使い作業を簡易化することによって、ミスの軽減につながるわけです。
コンテナ間のネットワーク設定が簡単になる
Dockerで複数のコンテナを作成する場合、特別な指定をしないとコンテナ間はIPアドレスによる通信しかできません。そのためアプリケーションのスケールなどでIPアドレスが変更されると、コンテナ同士で通信できなくなってしまうのです。
一方、Docker Composeを使い複数のコンテナを起動させると、自動でホスト名でも通信が可能なネットワークが作成されます。このネットワークでは、コンテナのIPアドレスが変更されてもコンテナ間の通信を継続可能です。これによって、コンテナ間のネットワーク設定が簡単になります。
Docker Composeのインストール方法
ここではDocker環境を構築済のUbuntu22.04に、Docker Composeをインストールする方法について解説します。
パッケージリストを更新します。
sudo apt-get update
Docker Composeをインストールします。
sudo apt-get install docker-compose-plugin
インストールが成功したか確認するため、以下コマンドを実行します。
docker compose version
インストールが成功している場合は、以下のようにインストールしたdocker composeのバージョンが出力されます。
なお、DockerCEに関してはKAGOYA VPSのテンプレートを利用することで、簡単に構築することができます。
Docker Composeの基本的な使い方
Docker Composeでは、あらかじめ所定の設定をすませておけば複数のコンテナを効率的に扱えるようになります。ここでは、Docker Composeの基本的な使い方についてみていきましょう。
「compose.yaml」ファイルを用意する
「compose.yaml」とは、Docker composeによって操作・処理するコマンド内容をまとめたファイル(指示書)です。Docker composeコマンドを実行する際は、以下のようなcompose.yamlを用意する必要があります。
<compose.yamlサンプル>
services:
db:
image: postgres
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
上記compose.yamlサンプルに記載された、各項目の意味は以下の通りです。
・service
Docker Composeによって動作させるアプリケーションの単位を指します。
上記サンプルでは、「db」と「web」という2つの要素によって、serviceが構成されているわけです。
・image
利用するDockerイメージを指定します。
・build
Dockerコンテナをどのように実行(build)するかをまとめます。
・volume
Dockerコンテナをマウントするボリュームを指定します。
・ports
ポートマッピングの内容を指定します。
・depens_on
他サービスの依存関係に関する指定です。
compose.yamlのより詳しい書式については、以下公式サイトで確認下さい。
Compose Specification(仕様)
※実際にDockerコンテナを作成・起動させる場合は、別途設計図にあたる「Dockerfile」 も必要です。
Docker composeの基本的なコマンド例
以下、Docker Composeで利用する基本的なコマンドについてみていきます。
・アプリケーションの起動
compose.yamlファイルがあるディレクトリにて、以下コマンドを実行します。
docker compose up -d
「-d」は、バックグラウンドでコンテナを起動するオプションです。
・アプリケーションの停止
以下コマンドでアプリケーションを停止し、コンテナを削除できます。
docker compose down
・アプリケーションの再起動
以下コマンドで、アプリケーションを再起動できます。
docker compose restart
「docker compose help」コマンドを実行すると、以下のように利用可能なコマンドの一覧を参照できます。
利用可能なコマンドのより詳しい内容については、公式サイトでも確認できます。
まとめ
Docker Engineは、1度に1つずつのDockerコンテナしか操作ができません。そのため、日常的に複数のコンテナを使いこなす必要があるケースでは、操作が煩雑となりミスも生じやすくなってしまいます。
一方、Docker Composeは、複数のコンテナを一度に操作できるツールです。所定の定義ファイルにあらかじめ設定を記載しておけば、その操作を一括で実行できるようになります。これにより複数コンテナの操作が飛躍的に簡単になる上、ミスの軽減にもつながるのです。
開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS
カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。