【问题标题】:How can I rescale an already running docker-compose without restarting containers?如何在不重新启动容器的情况下重新调整已经运行的 docker-compose?
【发布时间】:2022-01-01 23:50:28
【问题描述】:

我正在运行一个包含两个服务的 docker-compose 堆栈,我想多次缩放/重新缩放其中一个。

这是我的 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 的情况下,是否有任何可能的方法来做到这一点,但只需向堆栈中添加额外的容器?

【问题讨论】:

  • 您是否尝试以不同的比例运行相同的命令,没有build 标志?
  • 我试过了,但似乎所有旧容器都在重新启动。

标签: docker docker-compose


【解决方案1】:

您可以使用“--no-recreate”来做到这一点:

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

退房:

docker docs

【讨论】:

    猜你喜欢
    • 2016-09-16
    • 2016-09-28
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多