はじめに
docker-compose.yml の mem_limit を変更したとき、
- 本当に反映されている?
-
docker statsって何が分かるの?
といったところで詰まったので、備忘録としてまとめる。
想定ケース
mem_limit: 1g # 変更前
mem_limit: 10g # 変更後
前提(重要)
docker-compose.yml を変更しただけでは
すでに起動中のコンテナには反映されない
→ コンテナの作り直しが必要
$ docker compose down
$ docker compose up -d
※ 設定変更のみなら -v は不要
設定変更が反映されていることを確認する方法
1. mem_limit を正確に確認する(docker inspect)
-
docker inspectとは?
Docker によって管理されている構築物の詳細情報を表示するコマンド
# メモリ制限(バイト単位)を確認
$ docker inspect myapp-web-1 --format='{{.HostConfig.Memory}}'
10737418240
10737418240バイト(10g)が表示されていれば正常に反映されている。
2. 起動中コンテナのリソース使用状況から設定変更が反映されていることを確認する方法
-
docker statsとは?
起動中コンテナのリソース使用状況をリアルタイムで確認できるコマンド
$ docker stats
出力例
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM %
a1b2c3d4e5f6 myapp-web-1 0.35% 512MiB / 10GiB 5.0%
LIMIT が 10GiB になっていれば mem_limit は反映済み
docker inspect と docker stats の使い分け
| コマンド | 役割 |
|---|---|
| docker inspect | 設定値をバイト単位で正確に確認 |
| docker stats | 実際に効いている制限と使用状況を確認 |
安全な確認手順
$ docker compose down
$ docker compose up -d
$ docker ps
$ docker inspect myapp-web-1 --format='{{.HostConfig.Memory}}'
$ docker stats