You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何执行docker-compose stop会同时停止多个不同服务?

问题

确认未遗漏手册基础内容,当前目录结构如下:

/home/user
   /foo1/bar1/docker/
                   Dockerfile
                   docker-compose.yml
   /foo2/bar2/docker/
                   Dockerfile
                   docker-compose.yml

其中/foo1/bar1/docker下的docker-compose.yml配置:

version: '3.9'
services:
  foo1-bar1:
    build:
      context: .
      args:
        DOCKER_SERVER_ROOT_DIR: ${DOCKER_SERVER_ROOT_DIR}
      dockerfile: Dockerfile
    image: foo1-bar1:v1
    container_name: foo1-bar1-v1

/foo2/bar2/docker下的配置与之类似,对应服务为foo2-bar2-v1。

已分别进入对应目录执行启动命令成功启动两个服务:

cd /foo1/bar1/docker/
docker-compose up -d
[+] Running 1/1
⠿ Container foo1-bar1-v1  Started 

cd /foo2/bar2/docker/
docker-compose up -d
[+] Running 1/1
⠿ Container foo2-bar2-v1  Started

但进入~/foo1/bar1/docker目录执行docker-compose stop时,同时停止了两个容器:

user@vm:~/foo1/bar1/docker$ docker-compose stop
[+] Running 2/2
 ⠿ Container foo1-bar1-v1    Stopped
 ⠿ Container foo2-bar2-v2    Stopped

明明两个服务的服务名、容器名、镜像名都不相同,为何会出现这种情况?

原因分析与解决方案

核心原因

Docker Compose默认会以当前所在目录的名称作为项目名,你的两个服务所在的目录都叫docker,所以它们被归为同一个Docker Compose项目。当你在其中一个docker目录下执行docker-compose stop时,Compose会操作该项目下的所有容器,导致两个服务被同时停止。

解决方案

可以通过以下几种方式解决:

  1. 启动时指定项目名:使用-p参数为每个服务设置唯一的项目名,启动命令修改为:

    # 启动foo1-bar1服务
    cd /foo1/bar1/docker/
    docker-compose -p foo1-bar1 up -d
    
    # 启动foo2-bar2服务
    cd /foo2/bar2/docker/
    docker-compose -p foo2-bar2 up -d
    

    后续操作时也需要带上-p参数,比如停止foo1-bar1服务:

    docker-compose -p foo1-bar1 stop
    
  2. 在docker-compose.yml中配置项目名:在每个服务的docker-compose.yml顶部添加name字段(Compose 1.28+版本支持),指定唯一项目名:

    # /foo1/bar1/docker/docker-compose.yml
    name: foo1-bar1
    version: '3.9'
    services:
      # ... 原有配置内容
    
    # /foo2/bar2/docker/docker-compose.yml
    name: foo2-bar2
    version: '3.9'
    services:
      # ... 原有配置内容
    

    这样启动和操作时无需额外参数,Compose会自动识别不同的项目。

  3. 修改目录名称:将其中一个docker目录重命名为唯一名称,比如foo1-docker和foo2-docker,这样Compose默认的项目名就会不同,操作时不会互相影响。

内容的提问来源于stack exchange,提问作者IgorZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:15:42