2017-02-20 21 views
13

Sürüm 3'te belirtilen hizmetler için CPU & belleğini belirtemiyorum.Docker'da bellek ve CPU sınırı nasıl belirlenir sürüm 3

Sürüm 2'de, hizmetler altındaki "mem_limit" & "cpu_shares" parametreleriyle iyi çalışır. Ancak, sürüm 3'ü kullanırken başarısız oluyorsunuz, bunları dağıtmama bölümüne yerleştirmek, swarm modunu kullanmam sürece layık görünmüyor.

Birisi yardımcı olabilir mi?

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 

cevap

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

Daha: Sende https://docs.docker.com/compose/compose-file/#/resources

spesifik durum:

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 

Not:

  • gerekli değildir Açığa, varsayılan başına maruz kalacak yığın ağınız.
  • Resimler önceden oluşturulmalıdır. V3 içinde mümkün değil Buil
  • "Restart" da yeniden başlatıldı. Ağlar içinde: U Ayrıca Not
  • Sen (hepsi değilse de) çoğu iyileştirmeler v3 bağımsız bir düğüm "oğul", kullanmak sürüsü

içindir olabilir arıza-eylem ile dağıtmak altında yeniden kullanabilirsiniz Swarm modu köprü yapmaz. Sadece dahili olarak bağlanmak isterseniz, ağa bağlı olmanız gerekir. 1) diğer bir oluşturma dosyasında harici bir ağ belirtebilir veya --attachable parametresiyle (docker ağ -düzenli-My-Network -attachable) ile ağ oluşturmalısınız. Aksi takdirde portu şu şekilde yayınlamanız gerekir:

ports: 
    - 80:80 
+1

1. Sürüm 3'ü kullanarak görüntü oluşturabiliyorum.
2. V3 için yaklaşım, bir yükseltme gibi değil, v2'den tamamen farklı gibi görünüyor.
3. Dağıtma yalnızca sürüsü modunda çalışıyor gibi görünüyor. Uyarı alıyorum -
"UYARI: Bazı hizmetler (düğüm) yok sayılacak olan 'deploy' anahtarını kullanır. Compose yapılandırmayı konuşlandırmayı desteklemez - bir sürgüye dağıtmak için' docker stack deploy'unu kullanın. " – vivekyad4v

+2

@ viveky4d4v Oluşturma biçimi v3 dokümanı olarak, Swarm kullanmıyorsanız 'deploy' göz ardı edilir. Swarm kullanmıyorsanız v3 formatını kullanmak için gerçekten bir neden yok. –

+0

@DanLowe, yalnızca v3'te desteklenen beslemenin kendisinde sağlık kontrolü sağlamak istedik. Ama bence o olmadan hayatta kalacağım. Şimdi v3'e geçmenin mantıklı olmadığını kabul ediyorum. – vivekyad4v

İlgili konular