2017-02-20 399 views
13

我無法爲版本3中指定的服務指定CPU &內存。如何指定docker組合版本3中的內存和CPU限制

使用版本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 

注:

  • 揭露沒有必要的,將每默認情況下被曝光你的堆棧網絡。
  • 圖像必須預先構建。在v3內建立不可能的
  • 「重新啓動」也是decrapted。 U可以在部署使用重啓與故障動作
  • 您可以使用獨立的一個節點「一窩蜂」,V3最改進(如果不是全部)是羣

另請注意: 網絡在羣模式不橋接。如果您只想在內部進行連接,則必須連接到網絡。您可以1)在另一個撰寫文件中指定外部網絡,或者必須使用--attachable參數創建網絡(docker network create -d overlay My-Network --attachable) 否則,您必須發佈如下端口:

ports: 
    - 80:80 
+1

1.我能夠使用版本3構建圖像。
2.似乎v3的方法與v2完全不同,不像升級。
3.部署似乎只能在羣集模式下工作。我收到警告 -
「警告:某些服務(節點)使用'deploy'鍵,這將被忽略.Compose不支持部署配置 - 使用'docker stack deploy'部署到羣集。」 – vivekyad4v

+2

@ viveky4d4v正如Compose格式v3文檔所述,如果不使用Swarm,'deploy'將被忽略。除非你使用Swarm,否則沒有理由使用v3格式。 –

+0

@DanLowe我們希望在撰寫本身時提供健康檢查,僅在v3中受支持。但是我認爲我可以沒有這個生存。我同意現在轉到v3是沒有意義的。 – vivekyad4v