2017-02-20 17 views
13

Я не могу указать CPU & память для услуг, указанных в версии 3.Как указать ограничение памяти и процессора в докере составить версию 3

С версией 2 он отлично работает с параметрами «mem_limit» & «cpu_shares» под услугами. Но сбой при использовании версии 3, если поставить их в раздел развертывания, не кажется достойным, если я не использую режим роя.

Может ли кто-нибудь помочь?

version: "3" 
services: 
    node: 
    build: 
    context: . 
     dockerfile: ./docker-build/Dockerfile.node 
    restart: always 
    environment: 
     - VIRTUAL_HOST=localhost 
    volumes: 
     - logs:/app/out/ 
    expose: 
     - 8083 
    command: ["npm","start"] 
    cap_drop: 
     - NET_ADMIN 
     - SYS_ADMIN 

ответ

6
deploy: 
    resources: 
    limits: 
     cpus: '0.001' 
     memory: 50M 
    reservations: 
     cpus: '0.0001' 
     memory: 20M 

Подробнее: https://docs.docker.com/compose/compose-file/#/resources

В вас конкретный случай:

version: "3" 
services: 
    node: 
    image: USER/You-Pre-Build-Image 
    environment: 
     - VIRTUAL_HOST=localhost 
    volumes: 
     - logs:/app/out/ 
    command: ["npm","start"] 
    cap_drop: 
     - NET_ADMIN 
     - SYS_ADMIN 
    deploy: 
     resources: 
     limits: 
      cpus: '0.001' 
      memory: 50M 
     reservations: 
      cpus: '0.0001' 
      memory: 20M 

volumes: 
    - logs 

networks: 
    default: 
    driver: overlay 

Примечание:

  • Expose нет необходимости, будут выставлены на по умолчанию на вашей сети стека.
  • Изображения должны быть предварительно построены. Buil в v3 невозможно
  • «Перезагрузка» также уклоняется. U может использовать перезапуск при развертывании с по-провал действий
  • Вы можете использовать автономный один узел «роя», v3 большинство улучшений (если не все) для роя

Также Примечание: сети в Режим Рой не соединяется. Если вы хотите подключаться только внутренне, вы должны подключиться к сети. Вы можете: 1) указать внешнюю сеть в другом компиляционном файле или создать сеть с параметром --attachable (docker network create -d overlay My-Network --attachable) В противном случае вы должны опубликовать порт как:

ports: 
    - 80:80 
+1

1. Я могу создавать изображения с использованием версии 3.
2. Похоже, что подход для v3 полностью отличается от v2, а не как обновление.
3. Развертывание работает только в режиме роя. Я получаю предупреждения -
«ПРЕДУПРЕЖДЕНИЕ: Некоторые службы (узел) используют ключ« развернуть », который будет игнорироваться. Compose не поддерживает развертывание конфигурации - используйте« развертывание стека докеров »для развертывания на рой». – vivekyad4v

+2

@ viveky4d4v Поскольку в формате Compose format v3 doc, 'deploy' игнорируется, если вы не используете Swarm. Нет смысла использовать формат v3, если вы не используете Swarm. –

+0

@ DanLowe мы хотели обеспечить санитарию в самой компоновке, которая поддерживается только в v3. Но я думаю, что могу выжить без этого. Я согласен с тем, что теперь нет смысла переходить на v3. – vivekyad4v