簡體   English   中英

Docker compose 停止多個服務

[英]Docker compose stops multiple services

我希望我沒有錯過手冊中的任何簡單內容。
結構是:

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

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

foo-bar-v2也是如此。 我成功地運行了他們兩個:

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

問題是,為什么當我試圖只停止 1 時它會停止它們? 服務名、容器名、鏡像名不一樣……

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

docker-compose 有projects的概念。 運行docker-compose --help你會看到:

      --project-directory string   Specify an alternate working directory
                                   (default: the path of the, first specified, Compose file)
  -p, --project-name string        Project name

因此,在您的情況下,您的兩個服務都屬於名為docker的同一個項目。

您實際上可以運行docker-compose -p docker ps並且您將看到您的兩個服務。

您還可以通過指定您自己的項目名稱來覆蓋它,而不是目錄名稱。

我的 docker-compose 版本(Docker Compose 版本 v2.10.2 MacOS)確實警告我,當我復制您的設置時,此項目中有孤立容器。 此外,它不會自動停止“孤立”服務,並會發出警告說網絡也無法刪除。

這也是另一個有趣的事實:兩個服務都在同一個網絡(docker_default)上運行,只是因為項目名稱(文件夾名稱)相同。

我希望這能解釋它。

您必須指定要停止的服務 否則它將停止所有服務。

docker compose stop [OPTIONS] [SERVICE...]

這里: docker-compose stop foo1-bar1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM