2020/09/16
Docker Compose とはyaml形式の設定ファイルで記述されており、複数コンテナの実行を一括で管理できるツールです。
今回はDocker Composeコマンドをまとめてみました。
INDEX
基本コマンド 早見表
コマンド | 説明 |
---|---|
docker-compose ps | コンテナの一覧 |
docker-compose images | イメージの一覧 |
docker-compose build | サービスのimageをビルド |
docker-compose restart | サービスを再起動 |
docker-compose run |
サービスを起動 (※-dオプションでバックグランドで起動) |
docker-compose up | コンテナの作成と起動 |
docker-compose exec | コンテナに対してコマンドを実行 |
docker-compose logs | サービスのログを出力 |
docker-compose stop | サービスを停止させる |
docker-compose rm | docker-compose.ymlにかかれているコンテナを削除 |
docker-compose down | コンテナを停止&削除 |
image構築 | コンテナ構築 | コンテナ起動 | |
---|---|---|---|
docker-compose build |
〇 | × | × |
docker-compose up |
△ | 〇 | 〇 |
docker-compose start |
× | × | 〇 |
docker-compose run |
〇(単独) | 〇(単独) | 〇(単独) |
- buildコマンド
- imageを構築します。コンテナは作成しません。
- upコマンド
- キャッシュがある場合はそれを使って一発でイメージの構築から、コンテナの構築・起動までします。imageがなくてもbuildから実行してくれます。
- startコマンド
- 既存のコンテナを起動します。
- runコマンド
- imageの構築から、コンテナの構築・起動までしてくれます。
基本の流れ
1.ステータス確認
docker-compose ps
でコンテナ一覧を表示します。
# Laradockのディレクトリに移動
$cd /プロジェクト/laradock
# Git bash(ローカル環境)
$ docker-compose ps
# AWS EC2(本番環境)
# AWS EC2でコンテナを起動する場合はスーパーユーザで実行していく
$ sudo docker-compose ps
実演
2.起動
apache2 と mysql のコンテナを起動すると、依存関係のある php-fpm と workspace コンテナも起動されます。
# もちろん、php-fpm と workspaceコンテナも指定してもOK
$ docker-compose up -d apache2 mysql
# Apachじゃなくてnginxの場合
$ docker-compose up -d nginx mysql
# PhpMyAdminコンテナの起動
$ docker-compose up -d phpmyadmin
実演
3.コンテナ内のサービスに対してコマンドを実行
composerコマンドやmigrationコマンド、artisanコマンドを実行したい場合はworkspaceコンテナに入ります。
exec
コマンドを使って、コンテナ内のサービスに対してコマンドを実行します。
構文
docker-compose + exec (or run) + サービス名 + 実行したいコマンド
run
を指定して実行した場合は、新しくコンテナを立ち上げてから実行します。exec
を指定して実行した場合は、既に立ち上がっているコンテナを使って実行します。
# 1)Git bash(ローカル環境)でコマンドを打つケース
# Git Bachでは winpty を頭につける
$ winpty docker-compose exec workspace bash
# 2)AWS EC2(本番環境)でコマンド打つケース
# EC2ではスーパーユーザで実行
# sudo docker-compose exec workspace bash
# 接続したらcomposerコマンド、migrationコマンド、artisanコマンドが実行できる
# composer --version
# 接続を終了する場合
# exit
実演
DB にアクセスしたい場合は、同様に exec
コマンドを使って、MySQLコンテナに入ります。
構文
# Mysqlコンテナに入る
# docker-compose exec mysql bash
# MySQLにログイン
# mysql -u root -p
# 接続を終了する場合
# exit
実演
4.停止
基本は stop を使います。コンテナ名を指定せずに実行すると、起動中のコンテナが全部止まります。
# 全てのサービスを停止
$ docker-compose stop
# サービス名(phpmyadmin)を指定して停止
$ docker-compose stop phpmyadmin
# 停止かつコンテナ削除
$ docker-compose down
# 再起動
$ docker-compose restart
実演
自宅ではじめるDocker入門
Docker関連の数ある本でも、図や丁寧な解説で「わかりやすい」と評判がいい本です。コマンドを叩きながら、Dockerにおける「イメージ」「コンテナ」が理解できます。まだ、Kindle版が出てないのは惜しいですが、Docker入門としておススメの1冊です。
Amazonで詳細を見る
オススメ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。