2017-02-20 19 views
13

Tôi không thể chỉ định bộ nhớ CPU & cho các dịch vụ được chỉ định trong phiên bản 3.Cách chỉ định giới hạn bộ nhớ và CPU trong docker soạn phiên bản 3

Với phiên bản 2, nó hoạt động tốt với thông số "mem_limit" & "cpu_shares" trong dịch vụ. Nhưng nó thất bại trong khi sử dụng phiên bản 3, đặt chúng dưới phần triển khai không có vẻ xứng đáng trừ khi tôi đang sử dụng chế độ swarm.

Ai đó có thể trợ giúp?

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 

Trả lời

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

thêm: https://docs.docker.com/compose/compose-file/#/resources

Trong bạn trường hợp cụ thể:

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 

Lưu ý:

  • Expose không cần thiết, sẽ được tiếp xúc với mỗi mặc định trên mạng ngăn xếp của bạn.
  • Hình ảnh phải được tạo sẵn. Buil trong v3 không thể
  • "Khởi động lại" cũng được giải mã. U có thể sử dụng khởi động lại dưới triển khai với hành động trên thất bại
  • Bạn có thể sử dụng một độc một nút "bầy đàn", v3 nhất cải tiến (nếu không phải tất cả) đều mang tính bầy đàn

Cũng Lưu ý: Networks trong Chế độ Swarm không kết nối. Nếu bạn muốn kết nối nội bộ, bạn phải đính kèm vào mạng. Bạn có thể 1) chỉ định một mạng bên ngoài trong một tệp soạn thảo khác hoặc phải tạo mạng có tham số --attachable (mạng docker tạo lớp phủ d-My-Network -attachable) Nếu không, bạn phải xuất bản cổng như:

ports: 
    - 80:80 
+1

1. Tôi có thể tạo hình ảnh bằng phiên bản 3.
2. Có vẻ như cách tiếp cận cho v3 hoàn toàn khác với v2, không giống như nâng cấp.
3. Triển khai có vẻ chỉ hoạt động ở chế độ bầy đàn. Tôi nhận được cảnh báo -
"CẢNH BÁO: Một số dịch vụ (nút) sử dụng khóa 'triển khai', sẽ bị bỏ qua. Soạn thư không hỗ trợ triển khai cấu hình - sử dụng' docker stack deploy' để triển khai cho một nhóm. " – vivekyad4v

+2

@ viveky4d4v Theo định dạng Compose định dạng v3 doc, 'deploy' bị bỏ qua nếu bạn không dùng Swarm. Có thực sự không có lý do để sử dụng định dạng v3 trừ khi bạn đang sử dụng Swarm. –

+0

@DanLowe chúng tôi muốn cung cấp tính năng kiểm tra sức khỏe trong chính bản thân được hỗ trợ chỉ trong v3. Nhưng tôi nghĩ rằng tôi có thể sống sót mà không có điều đó. Tôi đồng ý rằng nó không có ý nghĩa để chuyển sang v3 bây giờ. – vivekyad4v

Các vấn đề liên quan