Docker Compose删除使用docker run启动的容器

时间:2017-03-19 15:32:29

标签: docker docker-compose

我有两个不同的Web项目,使用相同的docker镜像集来创建API响应。开发人员可以从GitHub克隆这些Web项目中的任何一个并运行npm脚本以在其本地开发计算机上启动Web层。

回购1 在此repo中,Web层的构建脚本使用脚本文件来启动应用层的容器(例如,容器名称为APP_CONTAINER)。应用程序层的端口是9090(例如),Web层运行在8080.此仓库中的docker脚本检查任何正在运行的应用程序(API)容器,将其删除,从我们的内部docker hub中提取最新图像,然后再次启动这些容器。

回购2 在此repo中,Web层的构建脚本使用docker compose来拉取应用程序(API)容器(与APP_CONTAINER同名)。这些容器的端口需要是相同的9090端口。此repo的Web层在不同的端口上运行,即端口3000。

我的问题是,当我在Repo 2中运行docker compose时,有没有办法删除容器APP_CONTAINER(如果它已经创建并由第一个repo使用docker run命令运行)?

1 个答案:

答案 0 :(得分:0)

如果容器名称总是相同(或者你可以确定的东西),你可以在bash中使用这样的东西(或者在你调用脚本的任何地方集成它)。

如果您只想停止已经运行的容器:

docker stop $(docker ps -q -f name=APP_CONTAINER)

如果要停止并删除已在运行的容器

docker rm $(docker stop $(docker ps -q -f name=APP_CONTAINER))

如果您想删除现有的应用容器,即使它没有运行,您也可以使用:

docker rm $(docker stop $(docker ps -qa -f name=APP_CONTAINER))

如果您必须在docker-compose up之前运行此命令,则可以创建一个运行的脚本,而不是手动启动容器。有点像:

#!/bin/bash

APP_CONTAINER="APP_CONTAINER" 
docker stop $(docker ps -q -f name=$APP_CONTAINER) 
docker-compose up -d