ডকার রচনা সংস্করণ 3 এ কীভাবে মেমরি এবং সিপিইউ সীমা নির্দিষ্ট করা যায়


111

সংস্করণ 3-এ উল্লিখিত পরিষেবার জন্য আমি সিপিইউ এবং মেমরি নির্দিষ্ট করতে অক্ষম।

সংস্করণ 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

3
: Docker-রচনা প্রকল্পে নির্মিত সংশ্লিষ্ট ইস্যুতে লিঙ্ক প্রদান github.com/docker/compose/issues/4513
Guillaume, Husta

উত্তর:


91

আমি জানি বিষয়টি কিছুটা পুরানো এবং বাসি বলে মনে হচ্ছে তবে যাইহোক আমি এই বিকল্পগুলি ব্যবহার করতে সক্ষম হয়েছি:

    deploy:
      resources:
        limits:
          cpus: '0.001'
          memory: 50M

ডকার-রচনাটির 3.7 সংস্করণ ব্যবহার করার সময়

আমার ক্ষেত্রে কী সহায়তা করেছিল, এই আদেশটি ব্যবহার করছিল:

docker-compose --compatibility up

--compatibility পতাকাটির অর্থ দাঁড়ায় (ডকুমেন্টেশন থেকে নেওয়া):

যদি সেট করা থাকে, রচনাগুলি v3 ফাইলগুলিতে কী-কে স্থাপন করে তাদের অ-স্বর্ম সমতুল্যে রূপান্তর করার চেষ্টা করবে

এটি দুর্দান্ত মনে করুন, আমাকে আমার ডকার-রচনা ফাইলটি v2-এ ফিরিয়ে দিতে হবে না।


4
এটি আকর্ষণীয় যে এই বিকল্পটিতে একটি নোট রয়েছে : "রূপান্তরটি একটি" সেরা প্রচেষ্টা "প্রচেষ্টা এবং উত্পাদন স্থাপনার জন্য নির্ভর করা উচিত নয়" "
বার্টোলো-ওট্রিট

3
এটি একটি দুর্বল ডিজাইন প্রোগ্রাম, ডকার-রচনাটির জন্য দুর্দান্ত ফিক্স। ডকর-রচনাটি যা প্রযোজনীয়
চার 43

1
উইন্ডোজ / ম্যাকের জন্য ধারক র‌্যাম / সিপিইউ> ডকার উপলব্ধ থাকলে আপনার সংস্থান সীমাবদ্ধতা কার্যকর হবে না। এটিকে পরিবর্তন করতে ম্যাক / উইন্ডোজ পছন্দসমূহ-> সংস্থানগুলির জন্য ডকারে যান এবং সেই অনুসারে সামঞ্জস্য করুন।
বিটমে

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

আরও: https://docs.docker.com/compose/compose-file/#res উত্স

আপনার নির্দিষ্ট ক্ষেত্রে:

version: "3"
services:
  node:
    image: USER/Your-Pre-Built-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

বিঃদ্রঃ:

  • এক্সপোজ প্রয়োজনীয় নয়, এটি আপনার স্ট্যাক নেটওয়ার্কে প্রতি ডিফল্ট প্রকাশ করা হবে।
  • চিত্রগুলি প্রাক-বিল্ট করতে হবে। ভি 3 এর মধ্যে বিল্ডিং সম্ভব নয়
  • "পুনঃসূচনা" হ্রাস করা হয়। অন-ব্যর্থতার ক্রিয়া সহ মোতায়েনের অধীনে পুনরায় চালু করতে পারেন
  • আপনি স্ট্যান্ডেলোন ওয়ান নোড "ঝাঁক" ব্যবহার করতে পারেন, v3 সর্বাধিক উন্নতি (সমস্ত না থাকলে) ঝাঁকের জন্য

এছাড়াও দ্রষ্টব্য: স্বর্ম মোডে নেটওয়ার্কগুলি ব্রিজ হয় না। আপনি যদি কেবল অভ্যন্তরীণভাবে সংযোগ করতে চান তবে আপনাকে নেটওয়ার্কের সাথে সংযুক্ত করতে হবে। আপনি 1) অন্য রচনা ফাইলের মধ্যে একটি বাহ্যিক নেটওয়ার্ক নির্দিষ্ট করতে পারেন, বা --attachable প্যারামিটার দিয়ে নেটওয়ার্ক তৈরি করতে হবে (ডকার নেটওয়ার্ক তৈরি -d ওভারলে মাই-নেটওয়ার্ক -ট্যাচেবল) আপনার অন্যথায় এই বন্দরটি প্রকাশ করতে হবে:

ports:
  - 80:80

6
1. আমি সংস্করণ 3 ব্যবহার করে চিত্রগুলি তৈরি করতে সক্ষম। <br/> ২ দেখে মনে হচ্ছে ভি 3 এর জন্য অ্যাপ্রোচ v2 থেকে সম্পূর্ণ আলাদা, কোনও আপগ্রেডের মতো নয়। <br/> 3. মোতায়েন করা কেবল ঝাঁক মোডে কাজ করছে বলে মনে হচ্ছে। আমি সতর্কবার্তা পাচ্ছি - <br/> "সতর্কবার্তা:। কিছু পরিষেবা (নোড) 'প্রয়োগের' কী, যা উপেক্ষা করা হবে ব্যবহার কম্পোজ প্রয়োগের কনফিগারেশন সমর্থন করে না - ব্যবহারের docker stack deploy। একটি সোয়ার্ম যাও স্থাপন যাও"
vivekyad4v

23
@ viveky4d4v যেমন সুরকার বিন্যাসে ভি 3 ডকটি সূচিত করে, আপনি যদি স্বর্ম deployব্যবহার না করে থাকেন তবে তা উপেক্ষা করা হবে। আপনি ঝাঁক ব্যবহার না করে ভি 3 ফর্ম্যাটটি ব্যবহার করার সত্যিই কোনও কারণ নেই।
ড্যান লো

2
যদি নতুন স্থাপনা শুরু করা হয় তবে আমি v3 দিয়ে শুরু করব। এমনকি যদি আমার কেবল একটি হোস্ট থাকে। সুতরাং আপনি পরে স্কেল করার সার্থকতা পেয়েছেন এবং ধারণাটি বুঝতে পারার পরে আপনার একই পরিমাণ সময়ের প্রয়োজন হবে।
বার্নডিনক্স

1
হাই @ কননোর, আমি যখন উত্তরটি সম্পাদনা করেছি তখন আমি যা করেছি তা হ'ল একটি ভাঙা লিঙ্কটি সংশোধন করা হয়েছিল। আপনার মত, আমি এখানে "অভ্যন্তরীণভাবে" অর্থ কী তা বোঝাতে অক্ষম।
জে টেলর

3
@ বার্ডিনক্স আপনি কীভাবে ডকস.ডোকার . com/v17.12/config/containers/resource_constraints/…memory-swap এ উল্লিখিত বিকল্পটি সেট করবেন তা জানতে পেরেছেন ? এটি কীভাবে সেট করতে হয় তার কোনও উদাহরণ আমি দেখতে পাচ্ছি না docker-compose.yml( ডকস.ডোকার . com / v17.12 / compose / compose-file / #res উত্স )। অনেক ধন্যবাদ.
রায়ান

49

ডক-শ্রমিক কম্পোজ সমর্থন করে নাdeploy কী। আপনি কেবলমাত্র ডকার স্ট্যাকের 3 YAML ফাইলটি ব্যবহার করলেই এটি সম্মানিত।

এই বার্তাটি মুদ্রিত হয় যখন deployআপনি নিজের docker-compose.ymlফাইলটি কী যুক্ত করেন এবং তারপরে চালিত হনdocker-compose up -d

সতর্কতা: কিছু পরিষেবা (ডাটাবেস) 'মোতায়েন' কী ব্যবহার করে, যা উপেক্ষা করা হবে। রচনা 'মোতায়েন' কনফিগারেশন সমর্থন করে না - docker stack deployএকটি ঝাঁক ব্যবহারের জন্য ব্যবহার করুন ।

ডকুমেন্টেশন ( https://docs.docker.com/compose/compose-file/#deploy ) বলেছেন:

পরিষেবা স্থাপন এবং চালনা সম্পর্কিত কনফিগারেশন নির্দিষ্ট করুন। এটি তখনই কার্যকর হয় যখন ডকার স্ট্যাক মোতায়েনের সাথে একটি ঝাঁককে মোতায়েন করা হয় এবং ডকার-কমপোজ আপ এবং ডকার-কমপোজ রান দ্বারা উপেক্ষা করা হয়।


2
বিশেষত দস্তাবেজগুলি বলছে আপনি যদি এটি করতে চান তবে ভি 2 ব্যবহার করুন বা জড়ো হতে ব্যবহার করুন।
ic_fl2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.