Docker Composeとは?
Docker Composeとは、一言で表現するならコンテナ管理ツールです。Dockerコマンドのみでアプリケーションを実行する場合、コンテナごとにパラメータを設定したり、起動したりする必要があります。
管理するコンテナが少ない場合はそれでもよいのですが、コンテナが増えれば増えるほど、パラメータや起動・停止の手順管理が煩雑になり、ミスも増えてしまいます。
そこで登場するのが、Docker Composeです。Docker Composeを利用すると、複数のコンテナの設定やオプションをファイル単位にまとめることができます。
1つのファイルで複数のコンテナを定義できるため、コンテナの数だけコマンドを実行する必要がなくなり、余分な作業やミスを減らすことができます。
他にも、ファイルを流用することで、環境の複製が簡単にできたり、テスト環境の一括デプロイに活用できたり、Dockerを利用する上では必須とも言える大きなメリットがあります。
Docker Composeをインストールする方法
それでは、早速Docker Composeをインストールしていきましょう。
Docker Desktopの利用可否を検討
まず、Docker Desktopが利用可能か確認しましょう。Docker Desktopは、Docker Engine、Docker CLI クライアント、Docker ComposeといったDockerの主要なアプリケーションをすべて含んだパッケージで、さらにGUIによる視覚的・直感的なコンテナ管理を利用できる特徴があります。
Docker Desktopを利用すると煩雑なインストール作業をシンプルにできるため、Docker公式でもDocker Desktopの利用を推奨しています。Docker Desktopをインストールする場合は、Docker Composeに必要なアプリケーションがすべて含まれているため、個別にインストールする必要はありません。
【参考】:Docker公式-Docker Desktop 概要
ただし、Docker Desktopは従業員が251人以上または年間の収益が1,000万ドル以上の規模での利用は商用利用となり、有料のサブスクリプション契約が必要です。商用規模の利用でDocker Desktopの有償契約を選択できない場合は、次から解説する手順で個別にインストールしましょう。
動作環境の確認と事前準備
まず、事前準備として、Docker ComposeにはDocker自体は含まれていませんので、事前にDockerのインストールを済ませておく必要があります。
【参考】:Docker公式-Docker のダウンロードとインストール
また、ご使用のOSによってインストール方法が違いますので、確認しておきましょう。Docker Composeは各種LinuxOSおよびWindows、macOSで動作します。
Docker Composeをインストールする
Docker Compose をインストールする方法はいくつかありますが、ここではLinux環境でDockerリポジトリから最新バージョンのDocker Composeをダウンロードしてインストールする方法について解説します。
Dockerリポジトリとは、Docker Composeのインストールパッケージが格納されている場所のことです。まずは、DockerリポジトリにアクセスしてDocker Composeの最新バージョンを確認して、メモしておきます。
【参考】:Docker公式-Dockerリポジトリ
それでは、早速インストールを進めましょう。Dockerのインストールされている環境で、以下の手順でコマンドを実行してください。
sudo curl -L https://github.com/docker/compose/releases/download/<Docker Composeの最新バージョン>/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
このコマンドでは、Dockerリポジトリから最新バージョンのDocker Composeをダウンロードして、/usr/local/bin/docker-composeの配下に保存しています。
sudo chmod +x /usr/local/bin/docker-compose
このコマンドでは、/usr/local/bin/docker-composeの配下のファイルに実行権限を付与しています。これにより、docker-composeコマンドが実行できるようになります。
docker-compose --version
このコマンドは、インストールされているDocker Composeのバージョン情報を出力します。バージョン情報が出力されない場合はインストールできていないので、インストール手順を再度見直してみましょう。
docker-compose version 2.14.2, build <ビルド>
このように、最新バージョンの表示が確認できればインストールは成功です。
Docker Composeで環境を構築する
それでは、実際にDocker Composeを使用して環境構築を実践してみましょう。ここでいう環境構築とは、複数のコンテナを定義して起動し、コンテナ同士が通信を確立し、連携した状態にすることを指します。
今回は例として、WordPressをDocker Composeで構築する方法について解説します。この方法は、Docker公式のクイックスタートガイドでも紹介されています。
【参考】:Docker公式-クィックスタート: Compose と WordPress
Docker Composeのプロジェクトを定義する
まずは、プロジェクト用のディレクトリを作成しましょう。名前は任意で構いませんが、ここではmy_wordpressとしておきます。
mkdir my_wordpress
Docker Composeを使用するには、まず「docker-compose.yml」というファイルを作成します。先ほど作成したプロジェクト用のディレクトリ配下に作成しましょう。
cd my_wordpress
vi docker-compose.yml
Docker-Compose.ymlにコンテナを定義
このファイルには、Dockerイメージをビルドするために必要な情報、コンテナを起動するために必要な情報、コンテナ同士の通信で使用するDockerネットワークなどを定義します。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
「services:」配下にコンテナ情報を定義しています。このサンプルコードでは、MySQLデータベース用の「db」と、WordPress用の「wordpress」の2つのコンテナが定義されています。
Docker Composeでコンテナを起動するには
docker-compose.ymlファイルに定義したコンテナを起動するには、以下のコマンドを実行します。
docker-compose up -d
docker runコマンドと比較すると、オプションをコマンドに付与する必要がないため、とてもシンプルになっていることが分かります。
コンテナの起動確認をするには、以下のコマンドを実行します。
docker-compose ps
StateがUpになっていれば、そのコンテナが起動中であることを表しています。以上で、Docker Composeによる環境構築の手順は完了です。
このように、Docker Composeを利用すると複数のコンテナをファイル単位でまとめて管理できるため、運用上のオーバーヘッドを解消できることがお分かり頂けたかと思います。
Docker Composeでワンランク上のコンテナ活用を
Docker Composeを利用すると環境の構築や複製が容易になるため、テストや開発のための環境を素早く構築したり、マイクロサービスを展開したりなど様々な活用が可能です。
より高度なコンテナ管理ツールとしてはKubernetesが有名ですが、Docker ComposeはKubernetesの設定をシンプルにする目的でも活用できますので、学んでおいて損はありません。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから