web-dev-qa-db-ja.com

`docker-compose run`でコンテナを停止する方法

docker-composeを使用して複数のコンテナをオーケストレーションしようとしています。トラブルシューティングを行うために、私は頻繁にコンテナ内からbashを実行します:

$ docker-compose run --rm run web bash

Bashセッションを終了するときにこれらのコンテナーが削除されるように、常に--rmスイッチを渡そうとします。ただし、場合によっては、それらが残り、docker-compose psの出力に表示されます。

           Name                          Command                State      Ports
----------------------------------------------------------------------------------
project_nginx_1            /usr/sbin/nginx                  Exit 0
project_nginx_run_1        bash                             Up         80/tcp
project_web_1              python manage.py runserver ...   Exit 128
project_web_run_1          bash                             Up         8000/tcp

この時点で、これらのコンポーネントを手動で停止および削除しようとしていますが、どうしてもできません。私は試した:

$ docker-compose stop project_nginx_run_1
No such service: project_nginx_run_1

他のコマンドrmkillなども試しました。

これらのコンテナを取り除くにはどうすればよいですか?

編集:

docker-compose psの出力を修正しました。

42
user1496984

docker stopを使用する代わりに、 docker-compose コマンドでテストコンテナを停止します。

docker-composeは多くのコンテナを一緒に起動するときに輝いていますが、docker-composeを使用してコンテナを起動しても、dockerコマンドを使用して個々のコンテナで必要なことを実行できます。

docker stop project_nginx_run_1 project_web_run_1 

また、コンテナをデバッグしているので、 docker-compose exec <service id> bash を使用して、実行中のコンテナでシェルを取得することをお勧めします。これには、新しいコンテナを開始しないという利点があります。

47
Thomasleveil

Docker-composeでは、2つの方法でサービスを停止できますが、両方のオプションに関する詳細情報を追加したいと思います。

要するに

docker-compose down

コンテナ、ネットワーク、イメージ、およびボリュームを停止して削除する

docker-compose stop

サービスを停止


詳細に

docker-compose runサービスを開始しますproject_nginx_run_1およびproject_web_run_1

docker-compose downログは

$ docker-compose down
Stopping project_nginx_run_1 ...
Stopping project_web_run_1 ...

.
. some service logs goes here

Stopping project_web_run_1 ... done
Stopping project_nginx_run_1 ... done
Removing project_web_run_1 ... done
Removing project_nginx_run_1 ... done
Removing network project_default

docker-compose stopログは

$ docker-compose stop
Stopping project_nginx_run_1 ...
Stopping project_web_run_1 ...

.
. some service logs goes here

Stopping project_web_run_1 ... done
Stopping project_nginx_run_1 ... done
3
mrsrinivas

docker-composeは、dockerとは異なり、ymlファイルで定義されているコンテナーの名前を使用します。したがって、コンテナを1つだけ停止するには、コマンドは次のようになります。

docker-compose stop nginx_run
docker-compose down

docker-compose psがそれを生成しないため、それが起動されたディレクトリ内から、それが停止したことを確認することができた唯一の方法です!

0
MediaVince