如何使用 `docker-compose 运行` 停止容器 运行
How stop containers run with `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
命令停止那些测试容器,而不是使用 docker-compose
.
docker-compose
在启动多个容器的时候大放异彩,但是使用docker-compose
启动容器并不妨碍你使用docker
命令做任何你需要做的事情使用单独的容器。
docker stop project_nginx_run_1 project_web_run_1
此外,由于您正在调试容器,我建议使用 docker-compose exec <service id> bash
在 运行 容器中获取 shell。这具有不启动新容器的优点。
docker-compose down
从它启动的目录中,是我设法确认它已停止的唯一方法,因为 docker-compose ps
不再产生它!
使用 docker-compose,可以通过两种方式停止服务,但我想添加一些关于这两种选项的详细信息。
In short
docker-compose down
Stop and remove containers, networks, images, and volumes
docker-compose stop
Stop services
详细
如果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
docker-compose
与 docker
不同,它使用 yml
文件中定义的容器名称。因此,要停止一个容器,命令将是:
docker-compose stop nginx_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
命令停止那些测试容器,而不是使用 docker-compose
.
docker-compose
在启动多个容器的时候大放异彩,但是使用docker-compose
启动容器并不妨碍你使用docker
命令做任何你需要做的事情使用单独的容器。
docker stop project_nginx_run_1 project_web_run_1
此外,由于您正在调试容器,我建议使用 docker-compose exec <service id> bash
在 运行 容器中获取 shell。这具有不启动新容器的优点。
docker-compose down
从它启动的目录中,是我设法确认它已停止的唯一方法,因为 docker-compose ps
不再产生它!
使用 docker-compose,可以通过两种方式停止服务,但我想添加一些关于这两种选项的详细信息。
In short
docker-compose down
Stop and remove containers, networks, images, and volumes
docker-compose stop
Stop services
详细
如果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
docker-compose
与 docker
不同,它使用 yml
文件中定义的容器名称。因此,要停止一个容器,命令将是:
docker-compose stop nginx_run