完成命令后,为什么docker-compose容器会保持活力?

时间:2016-02-13 22:31:38

标签: docker docker-compose

我使用docker-compose开发django应用程序:我有一个相当简单的设置 - 一个用于Web服务的服务和一个用于数据库的服务。有时我需要通过docker运行manage.py命令。

我使用以下命令:

$ docker-compose run web ./manage.py migrate

效果很好。但问题是,即使命令完成,docker也会保留容器:

$ docker-compose ps
      Name                     Command               State            Ports          
------------------------------------------------------------------------------------
seeder_data_1       sh                               Exit 0                          
seeder_postgres_1   /docker-entrypoint.sh postgres   Up       0.0.0.0:5432->5432/tcp 
seeder_web_1        fab run_local                    Up       0.0.0.0:8000->8000/tcp 
seeder_web_run_14   ./manage.py migrate              Up                              

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                    NAMES
61d3aee5bb39        seeder_web          "./manage.py migrate"    4 minutes ago       Restarting (2) 55 seconds ago                            seeder_web_run_14
85e91cb9383c        seeder_web          "fab run_local"          5 minutes ago       Up 5 minutes                    0.0.0.0:8000->8000/tcp   seeder_web_1
565b01dedb7b        postgres:latest     "/docker-entrypoint.s"   5 minutes ago       Up 5 minutes                    0.0.0.0:5432->5432/tcp   seeder_postgres_1

这很烦人:我不想拥有仅用于一个命令的大量僵尸容器。有没有办法在命令返回后如何自动结束机器?我知道我可以手动杀死但这有点烦人。

或者这背后有一些逻辑吗?

1 个答案:

答案 0 :(得分:2)

听起来你想要--rm的{​​{1}}标志:https://docs.docker.com/compose/reference/run/。已经提到过几次将它设为默认值(https://github.com/docker/compose/issues/2774https://github.com/docker/compose/issues/943),但看起来它们都失去了动力。