如何使用“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命令而不是使用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不同,docker-compose使用yml文件中定义的容器名称。因此,要只停止一个容器,命令将是:
docker-compose stop nginx_run

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

简而言之

docker-compose down

停止并删除容器、网络、图像和卷

docker-compose stop

停止服务


详细说明

如果docker-compose run启动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中不再产生它!

在我的特殊情况下,

docker compose down --remove-orphans

工作得最好(但这是假设您不需要继续运行组成文件中的任何服务)

最新更新