如何用`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
我也尝试了其他命令rm
, kill
等。
我应该怎么做才能摆脱这些容器?
编辑:
修复了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_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
docker-compose down
从它启动的目录内,是唯一的办法,我确认它已经停止,因为在docker-compose ps
不再产生它!