უმრავლესობისთვის ცნობილია ვირტუალიზაციის ისეთი პროგრამები, როგორიცაა: VirtualBox, VMware, Hyper-v და სხვა… ამ ვირტუალიზაციის საშუალებებს მოიხსენიებენ ჰიპერვიზორებად.
დღეს დღეობით პოპულარულია ვირტუალიზაციის ისეთი მეთოდი, რომელიც იყენებს არა ზემოთ ხსენებულ ჰიპერვიზორს, არამედ ალტერნატიულ მიდგომას, რომელსაც ეწოდება კონტეინერიზაცია.
ერთერთი ყველაზე ფართოდ გავრცელებული კონტეინერიზაციის სისტემა გახლავთ Docker-ი.
Docker არის პლატფორმა და ინსტრუმენტების ნაკრები, რომელიც საშუალებას გაძლევთ განავითაროთ, განათავსოთ და გაუშვათ პროგრამები მსუბუქი და პორტატული კონტეინერების შიგნით.
კონტეინერები არის იზოლირებული გარემოები, რომელიც ათავსებს აპლიკაციას და მის ყველა დამოკიდებულებას, ბიბლიოთეკებისა და სამუშაო დროის ჩათვლით, ერთ ერთეულში. ეს აადვილებს აპლიკაციების თანმიმდევრულობას და განმეორებადობას სხვადასხვა გარემოში, როგორიცაა განვითარება, ტესტირება და წარმოება.
- Container: კონტეინერი არის თვითმართვადი შესრულებადი პაკეტი, რომელიც მოიცავს ყველაფერს, რაც საჭიროა პროგრამული უზრუნველყოფის გასაშვებად, მათ შორის კოდი, გაშვების დრო, სისტემის ხელსაწყოები და ბიბლიოთეკები. კონტეინერები იზოლირებულია ერთმანეთისგან და მასპინძელი სისტემისგან, რაც უზრუნველყოფს თანმიმდევრულობას აპლიკაციებს შორის, სხვადასხვა გარემოში.
- Docker Engine: ეს არის Docker-ის ძირითადი კომპონენტი, რომელიც საშუალებას გაძლევთ შექმნათ და მართოთ კონტეინერები. იგი შედგება Docker daemon სერვისისგან და Docker CLI-გან, რომლის მეშვეობითაც თქვენ ურთიერთობთ დემონთან.
- Dockerfile: გახლავთ ტექსტური ფაილი, რომელიც შეიცავს ინსტრუქციების ერთობლიობას Docker image-ის შესაქმნელად. თვითონ image-ბი გამოიყენება კონტეინერების შესაქმნელად. Dockerfile-ი აღწერს საბაზისო image-ს აპლიკაციის კოდს და ნებისმიერ დამოკიდებულებას, რომელიც უნდა დაინსტალირდეს.
- Docker Image: ეს არის მსუბუქი, მხოლოდ წაკითხვადი შაბლონი, რომელიც გამოიყენება კონტეინერების შესაქმნელად. image-ის შექმნა შესაძლებელია Dockerfile-დან ან ჩამოტვირთვა Docker რეესტრიდან. ისინი ვერსიულია და მათი გაზიარება და გამოყენება შესაძლებელია სხვადასხვა გარემოში.
- Docker Registry: არის Docker image-ბის საცავი. არსებობს რამოდენიმე გავრცელებული Docker რეესტრი:
ესენია სტანდარტული საჯარო რეესტრები, თუმცა თქვენ ასევე შეგიძლიათ შექმნათ პირადი რეესტრები თქვენი ორგანიზაციის image-ბისთვის.
- Container Orchestration: დოკერი შეიძლება გამოყენებულ იქნას კონტეინერების ორკესტრირების ინსტრუმენტებთან, როგორიცაა Kubernetes და Docker Swarm, რათა ავტომატიზირდეს კონტეინერების განლაგება, მასშტაბირება და მართვა განაწილებულ გარემოში.
- Docker Compose: არის ინსტრუმენტი მრავალი კონტეინერის Docker აპლიკაციების განსაზღვრისა და გასაშვებად. ის საშუალებას გაძლევთ მიუთითოთ სერვისები, ქსელები და ტომი (volumes) თქვენი აპლიკაციისთვის YAML ფაილში და შემდეგ გაუშვათ ყველა კონტეინერი ერთი ბრძანებით.
ჰიპერვიზირება თუ კონტეინერიზაცია ?
ჰიპერვიზირება და კონტეინერიზაცია არის ორი განსხვავებული ტექნოლოგია ვირტუალიზაციისა და აპლიკაციების მართვისთვის.
ჰიპერვიზორები არის პროგრამები, რომლებიც ქმნიან ვირტუალურ მანქანებს (VM) ფიზიკურ კომპიუტერზე. ჰიპერვიზორი ასრულებს შუამავალის როლს კომპიუტერის აპარატურასა და ვირტუალურ მანქანებს შორის. ის უნაწილებს რესურსებს (CPU, მეხსიერება, დისკები) თითოეულ VM-ს და საშუალებას აძლევს მათ იმუშაონ ერთმანეთისგან დამოუკიდებლად.
კონტეინერები არის მსუბუქი, იზოლირებული პაკეტები, რომლებიც შეიცავს აპლიკაციას და მის დამოკიდებულებებს.
კონტეინერები იზიარებენ საერთო ოპერაციულ სისტემას მასპინძელ სისტემასთან. ისინი იზოლირებულია პროცესისა და ფაილური სისტემის დონეზე, მაგრამ ყველა მუშაობს იმავე OS-ზე. რაც სწრაფ და ეფექტურს ხდის მათ.
ეს არის ძირითადი განსხვავებები ამ ორ ვირტუალიზაციის მეთოდს შორის, არჩევანი კი დამოკიდებულია თქვენს საჭიროებებზე.