2017-02-20 401 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