如何在Docker撰写版本3中指定内存和CPU限制

我无法为版本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 

 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 

注意:

  • 公开没有必要,将暴露在您的堆栈networking上默认。
  • 图像必须预先构build。 在v3内build立不可能
  • “重新启动”也被废弃。 U可以在部署时使用重新启动,并使用on-failure动作
  • 你可以使用独立的一个节点“swarm”,v3大部分的改进(如果不是全部的话)都是swarm的

另请注意: Swarm模式下的networking不会桥接。 如果只想内部连接,则必须连接到networking。 您可以1)在其他撰写文件中指定外部networking,或者必须使用–attachable参数创buildnetworking(docker network create -d overlay My-Network –attachable)否则,您必须发布以下端口:

 ports: - 80:80