Docker Composeをインストールする

Docker Composeとは、複数のコンテナを定義して実行するDockerアプリケーションのためのツールです。Docker Composeは YAMLファイルを使ってDockerアプリケーションの設定を行います。

Docker composeコマンドを1つ実行することで、YAMLファイルの設定内容に従ってDockerアプリケーションの起動を簡単に行うことができます。

Docker composeを使うと何がうれしいかと言えば、Dockerのコンテナ、ストレージやネットワークをまとめて簡単に制御することができることです。

今回は、Docker composeのインストールと基本的な使い方について解説します。

Docker Composeをインストールする

Docker ComposeのV1(バージョン1)は、2023年6月末でサポートが終了するため、V2(バージョン2)への切り替えが勧告されています。

Important

From the end of June 2023 Compose V1 won’t be supported anymore and will be removed from all Docker Desktop versions.

Make sure you switch to Compose V2 with the docker compose CLI plugin or by activating the Use Docker Compose V2 setting in Docker Desktop. For more information, see the Evolution of Compose

Docker Compose のインストール | Docker ドキュメント (matsuand.github.io)

インストール方法

既にDocker ComposeのV1を利用している場合は、V1をアンインストールしてからV2をインストールします。Docker Composeをまだ利用していない場合は、そのままV2をインストールすることができます。

Docker Composeは、MACやWindowsにもインストールして利用することができますが、この記事では、Linux(CentOS 7)にDocker Composeをインストールする手順について解説します。

なお、Docker Compose V2の最新リリースは、以下のリンクから確認することができます。

https://github.com/docker/compose/releases

Docker Compseは、yumなどのパッケージマネージャではインストールすることはできません。GithubからロードモジュールをDockerがプラグインとして認識可能なディレクトリにダウンロードします。

はじめに、Dockerがプラグインとして認識可能なディレクトリを作成します。

$ mkdir -p /usr/local/lib/docker/cli-plugins

次にGiuhubからDocker Composeのロードモジュールをダウンロードします。以下の例では、バージョン2.15.1を指定していますが、好みに合わせて変更してください。

$ curl -L https://github.com/docker/compose/releases/download/2.15.1/docker-compose-`uname -s`-`uname -m` > /usr/local/lib/docker/cli-plugins/docker-compose

ロードモジュールのダウンロードが完了したら、パーミッションに実行権を付与します。docker compose versionコマンドでダウンロード時に指定したバージョンが表示されたら、Docker Composeは正常にインストールされています。

$ chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

$ docker compose version
Docker Compose version v2.15.1

Composeの基本的な使い方

Docker Composeは、YAMLファイルに記述された設定内容に従ってDockerアプリケーションを制御することができます。

今回は、Alpine Linuxのコンテナイメージを使って、コンテナの起動と停止をDocker Composeで試してみます。

最初にCompose_testという名前のディレクトリを作成して移動し、そこにdocker-compose.ymlというファイルを作成します。

$ mkdir Compose_test

$ cd Compose_test

$ touch docker-compose.yml

$ ls
docker-compose.yml

次に、docker-compose.ymlにコンテナ起動に関する設定を記述します。

$ vi docker-compose.yml

services:
  guestserver:
    image: alpine:latest
    container_name: compose-test1
    hostname: compose-test1
    tty: true

Docker Composeでは、Dockerアプリケーションの要素をサービスと呼んでいます。ここでは、gestserverというサービスに関する設定を記述しています。なお、サービスは任意の名称で指定してください。

サービスを構成する設定要素はインデントして記述します。インデントはタブを使用できないため、半角スペースを使います。

今回は、既にpullされたコンテナイメージを使用します。利用するコンテナイメージを「image: 」に記述します。その他は、コンテナ名とコンテナ起動したOSに付与するホスト名を設定しています。

「tty: true」で標準入出力先のデバイスを有効にして、コンテナのプロセスが終了しないようにしています。これは、docker runコマンドやdocker execコマンドで「-it」オプションを指定することと同じ意味です。

Composeでコンテナを起動する

YAMLファイルを保存したら、docker compose upコマンドを使って、Alpine Linuxコンテナを起動してみます。「-d」オプションを追加して、デタッチモード(バックグラウンド)でコンテナを起動させます。

$ ls
docker-compose.yml

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
alpine       latest    b2aa39c304c2   12 days ago   7.05MB

$ docker compose up -d
[+] Running 2/2
 ? Network compose_default  Created                                        2.0s
 ? Container compose-test1  Started                                        3.2s

$ docker compose ps
NAME                IMAGE               COMMAND             SERVICE             CREATED             STATUS        PORTS
compose-test1       alpine:latest       "/bin/sh"           guestserver         8 seconds ago       Up 5 seconds

$ docker compose ls
NAME                STATUS              CONFIG FILES
compose_test        running(1)          /home/oliver/Compose_test/docker-compose.yml

docker compose lsコマンドでは、実行されているDocker Composeのプロジェクト一覧が表示されます。「NAME(プロジェクト名)」には、docker-compose.ymlを配置しているディレクトリ名(すべて小文字)が設定されます。

コンテナが起動されたので、Alpine Linuxに接続してみます。

$ docker exec -it compose-test1 /bin/sh

$ hostname
compose-test1

docker-compose.ymlに設定した内容で、Alpine Linuxがコンテナ起動されたことが確認できました。

Composeでコンテナを停止する

次に、Docker Composeで起動したコンテナをdocker compose downコマンドで停止します。

$ docker compose down
[+] Running 2/2
 ? Container compose-test1  Removed                                       11.6s
 ? Network compose_default  Removed                                        0.6s

$ docker compose ls
NAME                STATUS              CONFIG FILES

docker compose ps -a
NAME                IMAGE               COMMAND             SERVICE             CREATED             STATUS              PORTS

まとめ

いかがでしたでしょうか。今回は、Docker Composeのインストールと基本的な使い方について解説しました。

今回の解説で登場したdocker composeコマンドは、以下の表のとおりです。

docker composeコマンド概要
docker compose updocker-compose.ymlの設定に従いDockerアプリケーションを起動する。
「-d」オプションを付与するとデタッチモードで起動する。
docker compose ps実行中のコンテナ情報の一覧を表示する。
「-a」オプションを付与すると停止中のコンテナも含めて一覧表示する。
docker compose ls実行中のDockerr Composeのプロジェクト一覧を表示する。
docker compose down docker-compose.ymlに基づくDockerアプリケーションを停止する。
docker composeコマンドの概要

Docker Composeを使うと、複数のコンテナ、ストレージやネットワークをまとめて簡単に制御することができるため、作業効率が格段に向上します。

手順を簡素にできるため、番環境でもメンテナンス性が向上します。これにより、プログラムの入れ替えやシステムの復旧にかかる時間を大幅に短縮させることが可能となります。

筆者が担当する開発プロジェクトにおいても、積極的に取り入れていきたいとおもいます。

参考になれば幸いです。

システムのお悩みについてご相談ください

本サイトの掲載内容に関するお問い合わせは、こちらから承ります。
SOHOのシステム運用管理に関するお悩みごとについて、なんでもお気兼ねなくご相談ください。
現役システムエンジニアのスタッフが、ボランティアでご相談にご対応させていただきます。
Docker

前の記事

Dockerでmacvlanを使う
Podman

次の記事

Podmanをやってみよう