Docker

რა არის Docker-ი ?

Docker-ი არის ღია პლატფორმა აპლიკაციის დეველოპმენტის, „გადატანის“ და გაშვებისთვის. Docker-ი დიზაინი ხელს უწყობს აპლიკაციის ერთი ადგილიდან მეორეზე სწრაფად გადატანას. Docker-თან ერთად თქვენ შეგიძლიათ თქვენი აპლიკაცია თქვენივე ინფრასტრუქტურიდან და  მოეპყროთ ინფრასტრუქტურას, როგორც მართულ აპლიკაციას. Docker-ი გვეხმარება გადავიტანოთ კოდი სწრაფად ერთი ადგილიდან მეორეზე, გავტესტოთ სწრაფად, დავა-deploy-ოდ აპლიკაცია სწრაფად და შევამციროთ დრო/ციკლი კოდის დაწერასა და გაშვებას შორის.

Docker-ი ამას აკეთებს კონტეინერის ვირტუალიზაციის პლატფორმის კომპინაციით სამუშაო პროცესთან, რომელიც გეხმარებათ მართოთ თქვენი აპლიკაცია და მოახდინოთ მისი deployment-ი.

თავისი არსით, Docker-ი უზრუნველჰყობს თითოეული აპლიკაციის დაცულად და იზოლირებულად გაშვებას. იზოლაცია და დაცულობა საშუალებას გაძლევთ, რომ გაუშვათ ბევრი კონტეინერი ერთდროულად თქვენს HOST-ზე.

რისთვის შემიძლია Docker-ის გამოყენება ?

თქვენი აპლიკაციების სწრაფად მიწოდებისთვის.

Docker-ი გვეხმარება დეველოპმენტის სასიცოცხლო ციკლში. Docker-ი საშუალებას აძლევს თქვენ დეველოპერებს, რომ კოდის დეველოპმენტი მოახდინონ ლოკალურ კონტეინერზე, რომელიც შეიცავს თქვენს აპლიკაციასა და სერვისებს. შემდგომში ადვილია მისი ინტეგრირება  deployment-ის სამუშაო პროცესთან.  მაგალითად, თქვენმა ერთ-ერთმა დეველოპერმა დაწერა კოდი ლოკალურად და შემდეგ დეველოპმენტის სტეკი გაუზიარა კოლეგებს (თანამშრომლებს) Docker-ის მეშვეობით. როცა კოდი იქნება მზად, და-push-ავს მას და გაუშვებს მას სატესტო რეჟიმში (ამუშავებს ტესტებს, რომელიც მოითხოვება). სატესტო გარემოდან უკვე შეეძლება და-push-ოს Docker image-ები production-ზე და დაა-deploy-ოს კოდი.

Docker-ის კონტეინერები შეიძლება გაეშვას ლოკალურ ჰოსტზე, მონაცემთა ცენტრის ფიზიკურ ან ვირტუალურ მანქანაზე, ან cloud-ში.

რა არის Docker-ის ძირითადი კომპონენტები ?

Docker-ს აქვს ორი ძირითადი კომპონენტი:

  • Docker-ი, რომელიც არის Open Source კონტეინერის ვირტუალიზაციის პლატფორმა.
  • Docker Hub – Software-as-a-Service პლატფორმა Docker-ის კონტეინერების გაზიარებისა და მართვისთვის.

რა არის Docker-ის არქიტექტურა ?

Docker-ი იყენებს client-server არქიტექტურას. Docker client-ი „ელაპარაკება“ Docker daemon-ს, რომელიც ასრულებს თქვენი Docker-ის building, running და distributing-ის მძიმე lifting-ს. ორივე Docker client და Docker daemon შეიძლება გაეშვას ერთსა და იმავე სისტემაზე, ან შეგიძლიათ Docker client დააკავშიროთ დაშორებულ/სხვა (remote) Docker daemon-ს.  Docker client და daemon-ი ერთმანეთს „ელაპარაკებიან“ სოკეტებით ან RESTful API-ით.

1

Docker Daemon

როგორც დიაგრამაზეა ნაჩვენები, Docker Daemon-ი ეშვება ჰოსტზე. მომხმარებელი პირდაპირ ვერ ურთიერთქმედებს daemon-თან, მაგრამ ამას აკეთებს client-ის მეშვეობით.

Docker Client

Docker client-ი არის ძირითადი მომხმარებლის ინტერფეისი Docker-თვის. ის მომხმარებლისგან იღებს ბრძანებებს და კომუნიკაცია აქვს Docker daemon-თან.

რომ გავიგოთ Docker-ის შიდა ნაწილები, გვჭირდება რომ ვიცოდეთ სამი კომპონენტი:

  • Docket Images- ეს არის read-only შაბლონი. მაგალითად, image შეიძლება შეიცავდეს უბუნტუს ოპერაციულს სისტემას Apache და თქვენი ვებ აპლიკაციით. Image-ები გამოიყენება Docker Container-ის შესაქმნელად. Docker-ი უზრუნველჰყობს მარტივ გზას ახალი image-ს შესამნელად ან უკვე არსებულის დასარედაქტირებლად, ანაც შეგიძლიათ ჩამოტვირთოთ ის Docker image-ები, რომლებიც შექმნილია სხვა დეველოპერების მიერ. Docker image-ები არის Docker-ის build კომპონენტი.
  • Docker Registries – ფლობს/შეიცავს image-ებს. ეს არის public ან private საცავები, საიდანაც შეგიძლიათ ატვირთოთ ან სადაც შეგიძლიათ ჩამოტვირთოთ image-ები. public Docker registry-ის ეწოდება Docker Hub-ი. ის უზრუნველჰყობს Image-ების დიდ კოლექციას თქვენთვის, რომელიც შეიძლება იყოს თქვენი შექმნილი ან  შექმნილი იყოს სხვა დეველოპერების მიერ. Docker registries არის Docker-ის distribution კომპონენტი.
  • Docker Containers არის მსგავსი დირექტორიისა. Docker container შეიცავს ყველაფერს, რაც არის საჭირო აპლიკაციის გაშვებისთვის. თითოეული container-ი იქმნება docker image-სგან. Docker container-ზე შესაძლებელია შემდეგი ოპერაციების ჩატარება: run, start, stop, move, delete. თითოეული კონტეინერი არის იზოლირებული და დაცული აპლიკაციის პლათფორმა. Docker container არის Docker-ის run კომპონენტი.

 

როგორ მუშაობს Docker-ი ?

ჩვენ ვნახეთ, რომ:

  • თქვენ შეგიძლიათ, მოახდინოთ build-ი Docker Image-სი, რომელსაც „უჭირავს“ თქვენი აპლიკაცია.
  • თქვენ შეგიძლიათ შექმნათ Docker container-ები Docker image-დან თქვენი აპლიკაციის გასაშვებად.
  • თქვენ შეგიძლიათ გააზიაროთ Docker Hub-ით ან თქვენი registry-ით.

როგორ მუშაობს Docker image  ?

ჩვენ უკვე ვნახეთ, რომ Docker image არის read-only შაბლონები საიდანაც ეშვება Docker container-ები. თითოეული კონტეინერი შეიცავს რამდენიმე ფენას. ერთ-ერთი მიზეზი, რატომაც Docker-ი არის ასეთი მსუბუქი, არის სწორედ ეს ფენები. როდესაც ვცვლით Docker Image-ს, მაგალითად, ვაახლებთ აპლიკაციის ვერსიას, ახალი ფენა ი-build-ება.  ამგვარად, იმის მაგივრად, რომ შეიცვალოს მთლიანი Image ან გაი-build-ოს მთლიანად, როგორც გააკეთებდით ვირტუალური მანქანის შემთხვევაში, მხოლოდ კონკრეტული ფენა ემატება ან ახლდება.

ყველა image იწყება საბაზისო Image-თი. მაგალითად Ubuntu, საბაზისო Ubuntu Image, fedora საბაზისო Fedora Image. შენიშვნა: Docker-ი ჩვეულებრივ საბაზისო Image-ებს იღებს Docker Hub-დან.

როგორ მუშაობს Docker registry ?

Docker registry არის საცავი Docker Image-ების. მას შემდეგ, რაც გა-build-ავთ Docker Image-ს, შეგიძლიათ  და-push-ოთ ის, Docker Hub-ზე (public registry-ზე). Docker client-ის გამოყენებით, თქვენ შეგიძლიათ უკვე გამოქვეყნებული Image-ები, და-pull-ოთ ისინი თქვენს Docker Host-ზე, რათა შექმნათ (build) კონტეინერები მათგან. Docker Hub უზრუნველჰყობს როგორც public ასევე private საცავებს image-ებისთვის. public საცავი არის მოძებნადი და ჩამოტვირთვადი ყველას მიერ, ხოლო private-ს გამოყენება შეუძლიათ მხოლოდ თქვენს მომხმარებლებს.

როგორ მუშაობს Docker Container-ი  ?

Container-ი შეიცავს ოპერაციულ სისტემას, მომხმარებლის მიერ დამატებულ ფაილებსა და მეტა ინფორმაციას. თითოეული კონტეინერი იქმნება (build) Image-დან.  ეს image ეუბნება Docker-ს თუ რას შეიცავს container-ი, რა პროცესები გაეშვას container-ის გაშვებისას და სხვა კონფიგურაციის მონაცემებს. Docker image არის read-only. როცა Docker გაუშვებს container-ს Image-დან, ის დაამატებს image-ს თავში (top) read-write ფენას, რომელშიც შეიძლება გაეშვას შემდეგ თქვენი აპლიკაცია.

რა ხდება , როცა ვუშვებთ container-ს ?

2

მოდით ავხსნათ ეს ბრძანება. Docker client-ი გაეშვა docker-ის გამოყენები, რომელსაც run ბრძანება ეუბნება, რომ გაუშავს ახალი container-ი. მინიმუმი, რაც Docker client-ს სჭირდება, რომ მისცეს Docker Daemon-ს ბრძანება container-ის გასაშვებად, არის :

  • რომელი Docker Image-დან შექმნას (build) container-ი, ამ შემთხვევაშუ Ubuntu, საბაზისო Ubuntu image-დან.
  • ბრძანება, რომელის გაშვებაც გსურთ container-ში, მას შემდეგ რაც ეს უკანასკნელი გაეშვება. ამ მაგალითში, /bin/bash .

რა მოხდა მას შემდეგ, რაც ჩვენ ეს ბრძანება გავუშვით ?

Docker-მა შეასრულა შემდეგი ოპერაციები:

  • და-pull-ა Ubuntu image- თუ ის არ არსებობდა ლოკალურად, მაშინ მას წამოიღებდა Docker Hub-დან. თუ ეს Image არსებობდა, გამოიყენებდა მას container-ის შესაქმნელად.
  • შექმნა ახალი container-ი.
  • გამოყო ფაილური სისტემა და დაა-mount-ა read-write ფენა.
  • გამოყო ქსელის ინტერფეისი
  • მიანიჭა IP მისამართი
  • გაუშვა ის პროცესი, რომელიც თქვენ მიუთითეთ – გაუშვა თქვენი აპლიკაცია
  • უზრუნველყო output-ი თქვენი აპლიკაციისა.

Leave a Reply / უპასუხე

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / შეცვლა )

Twitter picture

You are commenting using your Twitter account. Log Out / შეცვლა )

Facebook photo

You are commenting using your Facebook account. Log Out / შეცვლა )

Google+ photo

You are commenting using your Google+ account. Log Out / შეცვლა )

Connecting to %s