目次
1. Docker Composeとは?
- コンテナ構築に関わるコマンド文の内容をテキストファイル(定義ファイル)に書き込んで、一気に実行したり、停止・破棄したりできる。
- 定義ファイル名は、「docker-compose.yml」で、YAML形式で記述する
- Dockerfileはイメージを作るだけだが、Docker Composeはコンテナ、ネットワーク、ボリュームを作成できる
- upコマンド(一括実行=run), downコマンド(コンテナとネットワーク一括停止・削除)
# Apacheコンテナの定義ファイル例
version: "3"
services:
apa000ex2:
image: httpd
ports:
- 8080:80
restart: always
# 定義ファイル(docker-compose)の内容でコンテナが作成・実行される
$ docker-compose up httpd
2. 定義ファイルの書式
記述フォーマット
# Docker Composeの大項目の書き方
# Docker Composeのバージョン情報
# 必ず先頭に書く
version: "3"
# コンテナの情報
services:
コンテナ名1:
image: ~~
networks:
- ~~
ports:
- ポートの設定
...
コンテナ名2:~~
# ネットワークの情報
networks:
ネットワーク名1:~~
# ボリュームの情報
volumes:
ボリューム名1:~~
ボリューム名2:~~
※「-」を先頭につけた箇所は複数指定ができるところ
項目の定義項目リスト
大項目
大項目 | 内容 |
---|---|
services | コンテナに関する定義をする |
networks | ネットワークに関する定義をする |
volumes | ボリュームに関する定義をする |
大項目内の定義項目
項目 | docker runでの対応 | 内容 |
---|---|---|
image | イメージ引数 | 利用するイメージを指定する |
networks | --net | 接続するネットワークを指定する |
volumes | -v, --mount | 記憶領域のマウントを設定する |
ports | -p | ポートのマッピングを設定する |
environment | -e | 環境変数を設定する |
depends_on | なし | 別のサービスに依存することを示す |
restart | なし | コンテナが停止した時の再試行ポリシーを設定する |
command | コマンド引数 | 起動時の既定のコマンドを上書きする |
container_name | --name | 起動するコンテナ名を明示的に指定する |
dns | --dns | カスタムなDNSサーバーを明示的に設定する |
env_file | なし | 環境設定情報を書いたファイルを読み込む |
entrypoint | --entrypoint | 起動時のENTRYPOINTを上書きする |
external_links | --link | 外部リンクを設定する |
extra_hosts | --add-host | 外部ホストのIPアドレスを明示的に指定する |
logging | --log-driver | ログ出力先を設定する |
network_mode | --network | ネットワークモードを設定する |
restartの設定値
restartは、コンテナが停止したときの挙動を定義できる。
項目 | 内容 |
---|---|
no | 何もしない |
always | 必ず再起動する |
on-failure | プロセスが0以外のステータスで終了したときは再起動する |
unless-stopped | 停止したときは再起動しない、それ以外は再起動する |
3. docker-composeコマンド
# 構文フォーマット
# 「-f」で定義ファイルの場所を指定する
$ docker-compose -f 定義ファイルのパス コマンド オプション
docker-compose up
コンテナ・ボリューム・ネットワークを作成・実行する。
docker-compose upのオプション
オプション | 内容 |
---|---|
-d | バックグラウンドで実行する |
--no-color | 白黒画面として表示する |
--no-deps | リンクしたサービスを表示しない |
--force-recreate | 設定やイメージに変更がなくても、コンテナを再生成する |
--no-create | コンテナがすでに存在していれば再生成しない |
--no-build | イメージが見つからなくてもビルドしない |
--build | コンテナを開始前にイメージをビルドする |
--abort-on-container-exit | コンテナが1つでも停止したら、すべてのコンテナを停止する |
-t, --timeout | コンテナを停止するときのタイムアウト秒数、既定は10秒 |
--remove-orphans | 定義ファイルで定義されていないサービス用のコンテナを削除 |
--scale | コンテナの数を変える |
docker-compose down
定義ファイルの内容に従って、コンテナとネットワークを停止・削除する。
オプション指定なしだと、ボリュームとイメージは削除しない。
docker-compose downのオプション
オプション | 内容 |
---|---|
--rmi 種類 | 破棄後にイメージも削除する。(all:利用した全イメージ, local:imageにカスタムタグがないイメージ を対象) |
-v, --volumes | volumesに記述されているボリュームを削除する、ただしexternalが指定されているものは除く |
--remove-orphans | 定義ファイルで定義していないサービスのコンテナも削除する |
docker-compose stop
定義ファイルの内容に従って、コンテナを停止する。
主なコマンド一覧
コマンド | 内容 |
---|---|
up | コンテナを作成し、起動する |
down | コンテナとネットワーク停止及び削除する |
ps | コンテナ一覧を表示する |
config | 定義ファイルの確認と表示 |
port | ポートの割り当てを表示する |
logs | コンテナの出力を表示する |
start | コンテナを開始する |
stop | コンテナを停止する |
kill | コンテナを強制停止する |
exec | コマンドを実行する |
run | コンテナを実行する |
create | コンテナを作成する |
restart | コンテナを再起動する |
pause | コンテナを一時停止する |
unpause | コンテナを再開する |
rm | 停止中のコンテナを削除する |
build | コンテナ用のイメージを構築または再構築する |
pull | コンテナ用のイメージをダウンロードする |
scale | コンテナ用コンテナの数を指定する |
events | コンテナからリアルタイムにイベントを受信する |
help | ヘルプ表示 |
4. いろいろな例
随時追加予定。