Docker Composeについて、
初心者向けに、概念や使い方などのメモ。
Docker Compose とは

Docker Composeとは、
docker-composeコマンドを1 回実行するだけで、複数のコンテナを一度に起動したり停止できる仕組みのこと。
起動・停止したいコンテナ群の情報は、
docker-compose.ymlと言うファイルに記述する。
- Docker Composeとは、docker-composeコマンドを1 回実行するだけで、複数のコンテナを一度に起動したり停止できる仕組み
- 起動・停止したいコンテナ群の情報は、docker-compose.ymlと言うファイルに記述する。
Docker Compose のメリット
Docker Composeを使うメリットは下記のようなものがある。
- コマンドを打つ手間がかからない、コマンドを打つミスがない。
- docker-compose.ymlファイルがあれば、同じ環境をどこでも作成可能。
上記、Docker Composeを使うメリットについて簡単に説明していく。
①コマンドを打つ手間がかからない、コマンドを打つミスがない。
docker-composeを使う場合、起動するコンテナやオプション情報など全て一つのファイル(docker-compose.yml)に記述してしまうので、docker runでコンテナを起動するのに比べて、コマンドを打つ手間がかからない。また、打ち間違えによるミスがないと言うメリットがある
②docker-conpose.ymlファイルがあれば、同じ環境をどこでも作成可能。
またdocker-compose.ymlファイルが一つの環境の設計書のような役割になるため、違う環境でも、このファイルさえあれば、同様の環境が作成可能となる。
Docker Composeの使い方
Docker Composeの使い方の手順は大まかに3つある
- docker-composeコマンドをインストールする
- docker-compose.ymlを用意する
- docker-composeを実行する
1. docker-composeコマンドをインストールする
docker-composeコマンドは、その名の通り、
Docker Composeを行うためのコマンドだ。
インストールの仕方は色々あるので、ここでは割愛する。
各々調べて各自でやって欲しい
2. docker-compose.ymlを用意する
次にdocker-compose.ymlファイルを用意する。
冒頭でも紹介したが、docker-compose.ymlファイルには、起動したいコンテナ群の情報を記述する。つまり、docker-compose.ymlというファイルはいわば環境構築の設計書に相当するファイルである。
version: '3'
services:
php:
image: php:7.3-apache
build: ./
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
- ./html:/var/www/html
ports:
- 8080:80
mysql:
image: mysql:5.7
volumes:
- ./mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=test
- MYSQL_USER=test
- MYSQL_PASSWORD=test
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=test
- PMA_PASSWORD=test
links:
- mysql
ports:
- 4040:80
volumes:
- ./phpmyadmin/sessions:/sessions
書き方の詳細は割愛するが、
services:直下に、php:や、mysql:など書いてある単位で区切って、
各コンテナの情報を記述していくのが分かる。
3. docker-composeを実行する
docker-compose.ymlを準備できたら、
docker-compose.ymlを配置しているディレクトリに移動し、
下記docker-composeコマンドを実行する。
docker-compose up -d
docker-composeで記述してあるコンテナが全て起動するので、
docker psなどで確認する。
以上がDocker Composeの大まかな流れ
docker-compose のコマンドまとめ
docker-composeコマンドについてよく使うものをまとめる
build
サービスのイメージをビルドする。コンテナの起動は行わない。
サービスとは「php」や「mysql」のことを指す。

docker-compose.ymlファイルにimage:
が書かれている場合は、そのイメージ名がローカルになければ、リモートからプルしてくる。
imageが書かれていない場合、buildに書かれているパスのDockerfileを参考にしてイメージを構築する。docker-compose.ymlと同じ階層にDocerfileを置いておいて、パスを./にしておくのが良いかな?。
キャッシュがあればを優先的にキャッシュ使ってビルドするので、Dockerfileを更新したなどの理由でキャッシュを使いたくない場合は docker-compose build --no-cache
とする。
dockerのキャッシュって?
Dockerは一度イメージをビルドするとキャッシュというものを作成する。ブラウザとかにも備わっている、前に使ったデータを保持しておいて高速化を図る仕組みだ。なのでキャッシュがあると2回目以降にビルドするときに、速やかに処理をすることができる。
ただ、キャッシュがあると不便なときもあって、例えばDockerfileを更新したときなどだ。上に紹介したように --no-cache
オプションを付けないと、Dockerはキャッシュを使ってimageを構築してしまうので、更新したDockerfileを見てくれず新しいimageが作られない。
up
docker-compose up
は(imageがなければimageビルドから)コンテナの起動までを行う。
docker-compose up -d というように-dオプションを付けてバックグラウンドで起動させておくことが良い(フォアグラウンドだと、コンソールをもう1タブ開く必要がある、まあ好き好きだけど)。
–buildオプションをつけると、コンテナ起動の前に、イメージのビルドから実施してくれる。Dockerfileに変更があった場合に変更を反映させるために使う。
down
docker-compose.ymlに書かれているサービスを参考にコンテナを停止し、そのコンテナとネットワークを削除する。
オプションで--rmi all
をつけることでイメージも削除する。
start
start
コマンドでは既存のコンテナを起動する。コンテナがないと失敗する(upしよう)。
stop
stopコマンドでは既存のコンテナを停止する。削除まではしない(削除はdown)。
restart
コンテナを再起動する。
exec
docker exec同様、コンテナにログインできる。引数にサービス名と実行するコマンドを指定して、実行する。
ps
docker-compose ps と打つことで、起動中のコンテナの一覧を確認できる
images
docker-compose images と打つことで、対象のイメージの情報を表示する。
Docker Composeまとめ
- Docker Composeを使うと、複数のコンテナを一つのコマンドで一括管理できる
- コンテナの情報は全てdocker-compose.ymlファイルに記述する
- 複数のコンテナを使う場合はとても楽
[…] Docker Composeとは?使い方・メリットを解説 | hara-chan.com […]