Docker Composeとは
Docker Composeとは一言でいうと、複数のコンテナを定義して実行するツールです。Docker Composeを利用するには、まずYAMLファイルにサービスの内容を予め設定しておきます。そしてコマンドを実行すると、設定内容に基づき、サービスを生成して起動してくれます。
今回はDocker Composeの入門編として概要と特徴を解説するため、YAMLファイルの記述例などを詳しく知りたい方は、公式サイトをご覧ください。
【参考】:Docker Compose 概要
YAMLファイルとは
まずはYAMLファイルについて解説します。YAMLファイルとは「YAML Ain’t Markup Language」の略で、設定ファイルなどを作成するときに使われる言語です。ファイルの中には複数の文字列などの要素が並べられています。また拡張子は「yml」という文字列を使用します。
Docker Composeの中には、「docker-compose.ymlファイル」という名前のファイルがあります。実際に設定を記述する際には、docker-compose.ymlファイルを使用しましょう。
またYAMLファイルは、XMLファイルなどと比較すると、人間が読みやすい形式で書かれているため、人間が編集しやすいという特徴があります。
コンテナとは
コンテナとは、アプリケーションに必要なものを予めパッケージ化したものを指します。
コンテナと聞くと、仮想化マシンと同じだと思われる方もいるかもしれませんが、コンテナは仮想化マシンとは異なり、OSレベルからの構築はしません。そのため仮想化マシンと比較すると、より軽量な仮想化環境がコンテナだといえます。
Docker Composeの特徴
Docker Composeの特徴は、1つのホストから複数の環境を分けたり、コンテナ作成時にボリュームデータを保持できたり、変更のあったコンテナのみ再作成できる点が挙げられます。ここからは、Docker Composeのそれぞれの特徴を詳しく解説します。
1つのホストで、複数の環境を管理できる
Composeは1つのホストで複数の環境を管理できます。具体的にはプロジェクト名を使って、それぞれの環境を分離しています。プロジェクト名を指定するときにはコマンドラインのオプションか、環境変数を使用します。コマンドラインの詳細などは、公式サイトをご覧ください。
【参考】:コマンドライン リファレンス
コンテナの作成時に、ボリュームデータを保持してくれる
Docker Composeは、ボリュームデータを保持してくれます。ボリュームとはデータを永続化できる場所を指しますが、Docker ComposeではYAMLファイルの中にボリュームも設定することができます。
ボリュームデータを保持していれば、例えば何かしらの不具合でコンテナが落ちてしまった場合に、ボリューム内で作成したデータが失われずに済みます。
変更のあったコンテナのみ再作成できる
Docker Composeでは、コンテナを生成したタイミングで1度キャッシュに情報が保存されます。また同じ設定内容のサービスが起動された場合、既にあるコンテナを使用します。そのためサービスの再起動を高速に行える点が、特徴の1つといえるでしょう。
Dockerとは
Dockerとは、コンテナにアプリケーションパッケージや必要な機能をまとめて、実行できるプラットフォームです。このDockerには様々なサービスやツールがあり、Docker ComposeはDockerのツール群の1つという位置づけです。
【参考】:Docker 概要
Dockerの特徴
Dockerは再現性の高さと、軽量であることが大きな特徴といえます。Dockerは環境を1つ作ると、同じ環境をそのまま別のマシンで再現することができます。従来であれば、人が手順書などを見ながら環境を作成しますが、Dockerを使えばその手間は必要ありません。
またDockerのコンテナは軽量で、スピーディーにアプリケーションを実行できます。高い処理負荷も分散できるよう、予め考慮されています。そのため開発者が何かしらの処理を走らせる場合に、処理負荷を心配する必要もありません。
DockerとDocker Composeの違い
DockerとDocker Composeの違いは、複数のコンテナを操作できるかどうかです。Dockerは、docker-runコマンドを実行すると、1つのコンテナを起動することができます。例えばアプリケーションを動かすには、データベースやキャッシュなどの複数のコンテナを起動する場合が多いです。
つまりDockerでは複数のコンテナを立ち上げるために、何度もコマンドを打つ必要がありました。立ち上げの際に毎回何度もコマンドを打つことは、非常に手間がかかります。
一方でDocker Composeは、同時に複数のコンテナを操作出来るのが特徴です。予めYAMLファイルに設定しておくことで、1度コマンドを打てば複数のコンテナを起動できます。コマンドを打つ回数を減らせれば、作業時間やミスも削減できるので効率的に開発できます。
Docker Composeのインストール方法
Docker Composeのインストール方法は、OSごとに異なります。またインストールをする前には動作条件の確認も必要ですので、こちらも併せて解説します。
インストール前に確認すべきこと
インストール前に、PCのOSやスペックを確認しましょう。Docker ComposeはmacOS・Windows(64 ビット)・Linuxのいずれかで動作します。
インストールの流れ
Docker Composeは、Docker Desktopの中に含まれていますので、まずはDocker Desktopをインストールします。こちらをインストールすると、Docker Composeが利用できる状態になります。
ちなみにDocker Desktopは企業で使用する場合、利用条件がありますので注意しましょう。利用条件については、公式ドキュメントのページを参照してください。
【参考】:Docker Desktop 概要 【参考】:Docker Desktop を通して Compose をインストール
■Docker Desktop のインストール ご自身の環境にあったDocker Desktop をインストールしましょう。下記URLには、それぞれのOSごとにシステム要件やインストール手順などが記載されています。またOSごとに参照するURLが異なりますので、注意しましょう。
また実際にインストールする際には、最新のバージョンを確認してからインストールしましょう。
【参考】:Mac に Docker Desktop をインストール 【参考】:Windows に Docker Desktop をインストール 【参考】:Linux に Docker Desktop をインストール 【参考】:Compose インストールのシナリオ
■Docker Desktop を使用しない方法について Docker Desktopを使用せずにDocker Composeを利用するには、Docker CLIを利用します。Docker CLIをインストールすると、Docker Composeをプラグインとして利用できます。
しかし公式ドキュメントに記載の通り、基本的にはDocker Desktopの利用を推奨しているため、Docker Desktopを利用できる方はそちらを利用しましょう。Docker CLIの詳細については、公式サイトを参照してください。
【参考】:Docker Compose CLI プラグインのインストール
Docker Composeを利用してみよう
Docker Composeは、Dockerをより便利に活用できるため、インフラ業界をはじめIT技術者から注目を集めているツールです。Docker Composeは先述の通り、コマンド1つでコンテナを複数操作できる特徴があります。
また、Docker Desktopをインストールすれば、すぐに使うことができるのもメリットの1つです。その他にも小規模のチームや個人で使用する場合、基本的にはDocker Composeは無料で使えます。
アプリケーションの開発環境をどれにしようか検討されている方は、Docker Composeを使ってみてはいかがでしょうか。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから