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 up | docker-compose.ymlの設定に従いDockerアプリケーションを起動する。 「-d」オプションを付与するとデタッチモードで起動する。 |
docker compose ps | 実行中のコンテナ情報の一覧を表示する。 「-a」オプションを付与すると停止中のコンテナも含めて一覧表示する。 |
docker compose ls | 実行中のDockerr Composeのプロジェクト一覧を表示する。 |
docker compose down | docker-compose.ymlに基づくDockerアプリケーションを停止する。 |
Docker Composeを使うと、複数のコンテナ、ストレージやネットワークをまとめて簡単に制御することができるため、作業効率が格段に向上します。
手順を簡素にできるため、番環境でもメンテナンス性が向上します。これにより、プログラムの入れ替えやシステムの復旧にかかる時間を大幅に短縮させることが可能となります。
筆者が担当する開発プロジェクトにおいても、積極的に取り入れていきたいとおもいます。
参考になれば幸いです。
システムのお悩みについてご相談ください
SOHOのシステム運用管理に関するお悩みごとについて、なんでもお気兼ねなくご相談ください。
現役システムエンジニアのスタッフが、ボランティアでご相談にご対応させていただきます。