如何在不重新启动容器的情况下重新缩放已经 运行 docker-compose?

How can I rescale an already running docker-compose without restarting containers?

我是 运行 一个 docker-compose 堆栈,有两个服务,我想 scale/rescale 其中一个服务多次。

这是我的docker-compose.yaml文件:

version: '3.8'
services:
  manager:
    hostname: manager
    build:
      context: .
      dockerfile: manager.ubuntu.Dockerfile  
    restart: always
    ports:
      - '7777:80'
    volumes:
      - './src:/src'
      - './app:/var/www/html'
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker    
    tty: true
    networks:
      - my-net      
  worker:
    build:
      context: .
      dockerfile: worker.dind.Dockerfile  
    restart: always
    privileged: true    
    tty: true
    networks:
      - my-net            
networks:
  my-net:

我是这样缩放的:

docker-compose -p stack up --scale worker=3 --build

这是第一个结果:

...   NAMES
...   stack_manager_1
...   stack_worker_1
...   stack_worker_2
...   stack_worker_3

现在我有 3 个工人和 1 个经理 运行 我有时想重新调整以添加例如 2 个工人而不影响其他容器的当前状态。

重新缩放后的预期结果

...   NAMES
...   stack_manager_1
...   stack_worker_1
...   stack_worker_2
...   stack_worker_3
...   stack_worker_4
...   stack_worker_5

是否有任何可能的方法来做到这一点 I don't want any container to be stopped or restarted 但只需将额外的容器添加到堆栈中?

您可以使用“--no-recreate”来完成,例如:

docker-compose -up -d --scale worker=3 --no-recreate

查看:

docker docs