如何用`docker-compose run`阻止容器运行

我正在尝试使用docker-compose编排多个容器。 为了排除故障,我经常最终从容器中运行bash:

 $ docker-compose run --rm run web bash 

我总是尝试传递--rm开关,以便在退出bash会话时删除这些容器。 有时候,他们仍然存在,我在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的输出。

只需使用docker stop命令停止这些testing容器,而不是使用docker-compose

docker-compose在启动多个容器时会发光,但使用docker-compose启动容器并不会阻止您使用docker命令来执行任何需要对单个容器执行的操作。

 docker stop project_nginx_run_1 project_web_run_1 

另外,因为你正在debugging容器,所以我build议使用docker-compose exec <service id> bash在运行容器中获取一个shell。 这具有不启动新容器的优点。

使用docker-compose,可以通过两种方式停止服务,但是我想添加一些关于这两个选项的详细信息。

简而言之

docker-compose down

停止并移除容器,networking,图像和卷

docker-compose stop

停止服务


详细

如果docker-compose up开始服务project_nginx_run_1project_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 
 docker-compose down 

从它启动的目录内,是唯一的办法,我确认它已经停止,因为在docker-compose ps不再产生它!