気づいたらDockerがたくさん起動してた件
どうも、拓田です。
docker ps を打ったら、身に覚えのないコンテナがたくさん起動していました。
調べてみたら、以前インストールした Dify のコンテナ群でした。
「PCを起動するたびに勝手に立ち上がっていた」ということが判明したので、
調査から停止までの流れをまとめました。
状況
docker ps を実行したところ、こんな感じでたくさんのコンテナが起動していました。
CONTAINER ID IMAGE NAMES
5ebd0cc25caa nginx:latest docker-nginx-1
01e5ece0e858 langgenius/dify-api:0.6.13 docker-api-1
a7c6b9ef43e3 langgenius/dify-api:0.6.13 docker-worker-1
915d1466318a langgenius/dify-web:0.6.13 docker-web-1
3cd59a080685 semitechnologies/weaviate:1.19.0 docker-weaviate-1
25177f429648 langgenius/dify-sandbox:0.2.1 docker-sandbox-1
0cd7a6fbd1c5 ubuntu/squid:latest docker-ssrf_proxy-1
6cfae9c1aacf redis:6-alpine docker-redis-1
e2d852e392f4 postgres:15-alpine docker-db-1
コンテナ名が docker-〇〇 という形式で、これは全部 Dify の構成要素でした。
| コンテナ名 | 役割 |
|---|---|
docker-nginx-1 |
Difyへのアクセスを受け付けるサーバー |
docker-api-1 |
DifyのAPIサーバー |
docker-worker-1 |
Difyのバックグラウンド処理 |
docker-web-1 |
Difyの画面(フロントエンド) |
docker-weaviate-1 |
AIが使うベクターデータベース |
docker-sandbox-1 |
コード実行用の隔離環境 |
docker-ssrf_proxy-1 |
セキュリティ用プロキシ |
docker-redis-1 |
キャッシュ・キュー用DB |
docker-db-1 |
PostgreSQL(メインDB) |
問題:docker-compose.ymlが見つからない
Difyはdocker-composeで起動するので、普通は docker compose down で止められます。
ただし、それにはインストールしたフォルダに移動する必要があります。
フォルダを探そうとしましたが見つからず…
# Cドライブ全体を探しても出てこなかった
Get-ChildItem -Path C:\ -Recurse -Filter "docker-compose.yml" -ErrorAction SilentlyContinue
解決策:docker inspect でフォルダを特定する
コンテナ自体に「どこのdocker-composeから起動したか」という情報が記録されています。
以下のコマンドで確認できました。
docker inspect docker-nginx-1 | findstr "working_dir"
実行結果:
"com.docker.compose.project.working_dir": "C:\\Users\\nisit\\dify\\docker",
C:\Users\nisit\dify\docker が正解でした。
Difyを停止する
フォルダがわかったので、そこに移動して docker compose down を実行します。
cd C:\Users\nisit\dify\docker
docker compose down
これでDifyの全コンテナが止まり、PC再起動後も自動起動しなくなります。
なぜPC起動のたびに自動起動していたのか?
Difyの docker-compose.yml には各コンテナに以下の設定が入っています。
restart: always
この設定があると、Dockerが起動するたびにコンテナも自動で立ち上がります。
| 設定値 | 動作 |
|---|---|
restart: always |
PCを再起動しても自動で起動する |
restart: unless-stopped |
手動で止めない限り再起動する |
restart: no(省略時) |
自動起動しない |
docker compose down で停止すると、次回PC起動時には自動起動しなくなります。
まとめ
- docker-composeファイルの場所がわからなくても、
docker inspectでフォルダを特定できる -
com.docker.compose.project.working_dirラベルにインストール先が記録されている -
restart: alwaysが設定されているコンテナはPC起動時に自動で立ち上がる - 止めるには該当フォルダで
docker compose downを実行する
知らないうちにDockerがたくさん動いていると、PCのメモリをじわじわ使われてしまいます。
docker ps で定期的に確認する習慣をつけるといいかもしれません。