如何在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