はじめに
Dockerを使い始めると、まずは docker run コマンドでコンテナを起動することが多いと思います。
例えばNginxを起動する場合は以下のようになります。
docker run -d \
--name nginx \
-p 80:80 \
nginx:latest
コンテナが増えてくると、起動オプションを管理するのが大変になります。
そこで利用するのが Docker Compose です。Docker Composeを使うと、コンテナ構成をYAMLファイルとして管理できるようになります。
Docker Composeとは
Docker Composeは、コンテナの構成をコードとして管理するための仕組みです。
例えば先ほどの docker run は、Composeでは以下のように記述できます。
services:
nginx:
image: nginx:latest
ports:
- "80:80"
設定ファイルを作成しておけば、誰でも同じ環境を簡単に再現できます。
事前準備
DockerおよびDocker Composeが利用できることを確認します。
docker --version
docker compose version
作業ディレクトリを作成する
mkdir docker-compose-nginx
cd docker-compose-nginx
compose.ymlを作成する
compose.yml
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
restart: unless-stopped
各項目の意味は以下の通りです。
| 項目 | 説明 |
|---|---|
| image | 使用するコンテナイメージ |
| container_name | コンテナ名 |
| ports | ポートマッピング |
| restart | 自動起動設定 |
コンテナを起動する
docker compose up -d
実行結果例
[+] Running 1/1
✔ Container nginx Started
コンテナの状態を確認する
docker compose ps
出力例
NAME IMAGE STATUS
nginx nginx:latest Up
ブラウザで確認する
ブラウザから以下へアクセスします。
http://サーバIPアドレス
NginxのWelcomeページが表示されれば成功です。
ログを確認する
ログ表示
docker compose logs
リアルタイム表示
docker compose logs -f
コンテナを停止する
docker compose stop
コンテナを削除する
docker compose down
ボリュームを利用してWebページを配置する
作業用ディレクトリを作成します。
mkdir html
html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Docker Compose Sample</title>
</head>
<body>
<h1>Hello Docker Compose</h1>
</body>
</html>
compose.yml
services:
nginx:
image: nginx:latest
container_name: nginx
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
コンテナを再作成します。
docker compose down
docker compose up -d
ブラウザを更新すると、自作したHTMLが表示されます。
よく使うコマンド
| コマンド | 内容 |
|---|---|
| docker compose up -d | 起動 |
| docker compose down | 停止・削除 |
| docker compose stop | 停止 |
| docker compose start | 起動 |
| docker compose restart | 再起動 |
| docker compose ps | 状態確認 |
| docker compose logs | ログ確認 |
まとめ
Docker Composeを利用すると、コンテナの設定をコードとして管理できるようになります。
IaCの第一歩として、便利に使っていきましょう!