Sobes.tech
Middle

Docker-ის კონტეინერების იზოლაცია რა საფუძველზეა დაფუძნებული?

sobes.tech AI

პასუხი AI-სგან

Docker-ის კონტეინერების იზოლაცია ეფუძნება შემდეგ ძირითად ტექნოლოგიებს და Linux-ის ბირთვის მექანიზმებს:

  1. Namespaces (სახელთა სივრცეები): საშუალებას აძლევს იზოლიროს ხილვადობა და სისტემური რესურსების წვდომა. Docker იყენებს რამდენიმე სახის Namespaces-ს:

    • PID namespace: იზოლირებს პროცესებს, თითოეული კონტეინერი ხედავს მხოლოდ თავის პროცესებს (PID 1 კონტეინერის შიგნით).
    • Net namespace: იზოლირებს ქსელურ სტეკს (ქსელური ინტერფეისები, IP-მისამართები, პორტები, მარშრუტიზაციის წესები).
    • Mnt namespace: იზოლირებს ფაილური სისტემის მონტაჟის წერტილებს.
    • UTS namespace: იზოლირებს hostname და დომენურ სახელს.
    • IPC namespace: იზოლირებს პროცესებს შორის კომუნიკაციის რესურსებს (სემაფორები, გაზიარებული მეხსიერება).
    • User namespace: იზოლირებს მომხმარებლის ID-ებს და ჯგუფებს.
  2. Control Groups (cgroups): საშუალებას აძლევს შეზღუდოს და აკონტროლოს სისტემური რესურსების მოხმარება (CPU, მეხსიერება, I/O, ქსელური ტრეფიკი) პროცესთა ჯგუფებისთვის. Docker იყენებს cgroups-ს:

    • CPU-ს რაოდენობის ან CPU-ს დროის წილის შეზღუდვა.
    • ხელმისაწვდომი მეხსიერების შეზღუდვა.
    • პრიორიტეტიზაცია ან დისკის I/O-ს შეზღუდვა.
    • ქსელური ტრეფიკის შეზღუდვა.
  3. Union File Systems (UnionFS): ქმნის ფაილური სისტემის ფენებს. Docker იყენებს OverlayFS, AUFS (ძველი), Btrfs. ეს საშუალებას აძლევს:

    • შექმნას მსუბუქი ფენები Docker-ის გამოსახულებებისთვის.
    • ეფექტურად გამოიყენოს დისკის სივრცე საერთო გამოყენებით ძირითადი ფენების.
    • ცვლილებების ჩაწერისას კონტეინერში შექმნას COW (Copy-on-Write) ფენები, ძირითადი გამოსახულების შეცვლის გარეშე.
  4. Seccomp (Secure Computing Mode): შეზღუდავს სისტემური ზარებს (syscalls), რომლებიც პროცესმა შეიძლება შეასრულოს კონტეინერის შიგნით, ამით ამცირებს თავდასხმის ზედაპირს. Docker იყენებს seccomp პროფილებს უმეტეს კონტეინერებისთვის.

  5. AppArmor / SELinux: დამატებითი უსაფრთხოებისა და იზოლაციისთვის შეიძლება გამოყენებულ იქნას მანდატური წვდომის კონტროლის მოდულები (Mandatory Access Control - MAC), როგორიცაა AppArmor ან SELinux. ისინი უზრუნველყოფენ უფრო დეტალურ კონტროლს იმაზე, თუ რა შეიძლება გააკეთოს პროცესებმა (მაგ., ფაილებზე, ქსელურ რესურსებზე წვდომა). Docker შეიძლება გამოიყენოს AppArmor ან SELinux პროფილები, თუ ისინი კონფიგურირებულია ჰოსტის სისტემაზე.