ნაბიჯ-ნაბიჯ სახელმძღვანელო Docker-ის, Kubernetes-ის და ყველა აუცილებელი ხელსაწყოს დასაყენებლად, რომლებიც გჭირდებათ კონტეინერების დეველოპმენტისთვის.
ეს სახელმძღვანელო გთავაზობთ დეტალურ ინსტალაციის ინსტრუქციებს Docker-ისა და Kubernetes-ის ხელსაწყოებისთვის Linux, macOS და Windows პლატფორმებზე. მიჰყევით თქვენი ოპერაციული სისტემისთვის განკუთვნილ ნაბიჯებს, რათა შექმნათ სრული კონტეინერული დეველოპმენტის გარემო.
ინსტალაციის შემდეგ, შეამოწმეთ, რომ Docker-ი სწორად მუშაობს ამ ბრძანებებით:
# შეამოწმეთ Docker-ის ვერსია
docker --version
# იხილეთ დეტალური სისტემური ინფორმაცია
docker info
# გაუშვით სატესტო კონტეინერი
docker run --rm hello-world
თუ Docker-ი სწორად არის დაინსტალირებული, hello-world კონტეინერი ჩამოიტვირთება (თუ უკვე არ არის) და გაეშვება, გამოიტანს წარმატების შეტყობინებას:
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
...
ეს შემოწმების პროცესი ადასტურებს, რომ:
Docker კლიენტს შეუძლია დაუკავშირდეს Docker დემონს
დემონს შეუძლია იმეიჯების ჩამოტვირთვა Docker Hub-იდან
დემონს შეუძლია კონტეინერების შექმნა და გაშვება
კონტეინერის გამომავალი მონაცემები სწორად უბრუნდება თქვენს ტერმინალს
დააკონფიგურირეთ Docker-ი, რომ იმუშაოს sudo-ს გარეშე და ჩაირთოს სისტემის გაშვებისას:
# დაამატეთ თქვენი მომხმარებელი docker ჯგუფში
sudo usermod -aG docker $USER
# გამოიყენეთ ახალი ჯგუფის წევრობა (ან გამოდით და ხელახლა შედით)
newgrp docker
# ჩართეთ Docker-ის გაშვება სისტემის ჩატვირთვისას
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
# შეამოწმეთ, რომ შეგიძლიათ Docker-ის გაშვება sudo-ს გარეშე
docker run --rm hello-world
მომხმარებლების docker ჯგუფში დამატება ფაქტობრივად root პრივილეგიებს ანიჭებს, რადგან კონტეინერებს შეუძლიათ ჰოსტის ფაილური სისტემის მონტირება. ამ ჯგუფში დაამატეთ მხოლოდ სანდო მომხმარებლები.
Kubernetes-ი გაძლევთ საშუალებას მოახდინოთ კონტეინერების ორკესტრირება მრავალ ჰოსტზე. ჩვენ დავაინსტალირებთ აუცილებელ ხელსაწყოებს ლოკალური Kubernetes დეველოპმენტისთვის.
Minikube-ს სჭირდება "დრაივერი" Kubernetes კლასტერის შესაქმნელად. Windows-ზე რამდენიმე ვარიანტი გაქვთ:
Docker დრაივერი (რეკომენდებულია WSL2-თან ერთად):
minikube config set driver docker
Hyper-V დრაივერი (მოითხოვს Windows Pro/Enterprise/Education):
# ჩართეთ Hyper-V, თუ უკვე არ არის ჩართული
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
# დააკონფიგურირეთ Minikube Hyper-V-ს გამოსაყენებლად
minikube config set driver hyperv
ახლა, როდესაც Minikube დაინსტალირებულია, მოდით შევქმნათ თქვენი პირველი ლოკალური Kubernetes კლასტერი:
# გაუშვით Minikube ნაგულისხმევი პარამეტრებით
minikube start
# შეამოწმეთ კლასტერის სტატუსი
minikube status
# იხილეთ კლასტერის ინფორმაცია
kubectl cluster-info
# იხილეთ კვანძები კლასტერში
kubectl get nodes
თუ წარმატებით დასრულდა, უნდა ნახოთ მსგავსი გამომავალი:
😄 minikube v1.31.2 on Linux 5.15.0-60-generic
✨ Using the docker driver based on existing profile
👍 Starting control plane node minikube in cluster minikube
🚜 Pulling base image ...
🔄 Restarting existing docker container for "minikube" ...
🐳 Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...
🔎 Verifying Kubernetes components...
▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟 Enabled addons: default-storageclass, storage-provisioner
🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
ახლა, როდესაც დააინსტალირეთ ყველა საჭირო კომპონენტი, მოდით შევამოწმოთ, რომ ყველაფერი სწორად მუშაობს რამდენიმე ძირითადი ტესტის ჩატარებით. ეს უზრუნველყოფს, რომ თქვენი დეველოპმენტის გარემო სწორად არის მოწყობილი, სანამ აპლიკაციების შექმნას დაიწყებთ.
მოდით, პირველ რიგში დავრწმუნდეთ, რომ Docker-ი გამართულად მუშაობს რამდენიმე მარტივი ბრძანების გაშვებით:
# გაუშვით მარტივი კონტეინერი და შეამოწმეთ გამომავალი
docker run --rm alpine echo "Hello from Docker container!"
ეს ბრძანება ჩამოტვირთავს მსუბუქ Alpine Linux იმეიჯს (თუ უკვე არ არის) და გაუშვებს კონტეინერს, რომელიც გამოიტანს მისალმების შეტყობინებას. --rm დროშა უზრუნველყოფს კონტეინერის ავტომატურ წაშლას შესრულების შემდეგ.
თქვენ უნდა ნახოთ გაშვებული კონტეინერების სია (რომელიც შეიძლება ცარიელი იყოს, თუ არ გაქვთ გაშვებული კონტეინერები).
# შექმენით მარტივი Docker ქსელი ქსელის ფუნქციონირების შესამოწმებლად
docker network create test-network
# შეამოწმეთ, რომ ქსელი შეიქმნა
docker network ls | grep test-network
# წაშალეთ სატესტო ქსელი დასრულებისას
docker network rm test-network
თუ ეს ბრძანებები შეცდომების გარეშე შესრულდება, თქვენი Docker-ის ინსტალაცია სწორად მუშაობს.
თუ პირველი ბრძანების გამომავალში ხედავთ "Hello from Docker container!", ეს ნიშნავს, რომ Docker-ი წარმატებით იღებს იმეიჯებს და უშვებს კონტეინერებს. ქსელის ბრძანებები ამოწმებს, რომ Docker-ის ქსელური შესაძლებლობები გამართულად მუშაობს.
ახლა, მოდით შევამოწმოთ, რომ თქვენი Kubernetes კლასტერი მუშაობს და შეუძლია აპლიკაციების დეპლოიმენტი:
# შეამოწმეთ, რომ Minikube მუშაობს შესაბამისი სტატუსით
minikube status
თქვენ უნდა ნახოთ გამომავალი, რომელიც მიუთითებს, რომ Minikube მუშაობს, სადაც host, kubelet და apiserver ყველა აჩვენებს "Running" სტატუსს.
# გაუშვით მარტივი სატესტო აპლიკაცია თქვენს კლასტერში
kubectl create deployment hello-kubernetes --image=k8s.gcr.io/echoserver:1.4
# გამოაჩინეთ დეპლოიმენტი როგორც NodePort სერვისი
kubectl expose deployment hello-kubernetes --type=NodePort --port=8080
# დაელოდეთ ცოტა ხანს, სანამ პოდი მზად იქნება
kubectl wait --for=condition=ready pod -l app=hello-kubernetes --timeout=60s
მოდით შევამოწმოთ, რა შევქმენით:
# შეამოწმეთ, რომ პოდი მუშაობს
kubectl get pods -l app=hello-kubernetes
# შეისწავლეთ შექმნილი სერვისი
kubectl get services hello-kubernetes
# მიიღეთ დეტალური ინფორმაცია ჩვენი დეპლოიმენტის შესახებ
kubectl describe deployment hello-kubernetes
და ბოლოს, მოდით შევიდეთ ჩვენს აპლიკაციაში:
# გახსენით სერვისი თქვენს ნაგულისხმევ ბრაუზერში
minikube service hello-kubernetes
თუ ყველაფერი სწორად მუშაობს, თქვენი ბრაუზერი ავტომატურად უნდა გაიხსნას და აჩვენოს echoserver აპლიკაცია. ეს ადასტურებს, რომ თქვენს Kubernetes კლასტერს წარმატებით შეუძლია:
მას შემდეგ, რაც დარწმუნდებით, რომ ყველაფერი მუშაობს, მოდით გავასუფთავოთ სატესტო რესურსები:
# წაშალეთ ჩვენ მიერ შექმნილი სერვისი
kubectl delete service hello-kubernetes
# წაშალეთ დეპლოიმენტი
kubectl delete deployment hello-kubernetes
# შეამოწმეთ, რომ რესურსები წაიშალა
kubectl get all | grep hello-kubernetes
ბოლო ბრძანებამ არ უნდა დააბრუნოს შედეგი, რაც მიუთითებს, რომ ყველა რესურსი წარმატებით წაიშალა.
კარგი პრაქტიკაა სატესტო რესურსების გასუფთავება, როდესაც ისინი აღარ არის საჭირო, რათა თავიდან აიცილოთ თქვენი კლასტერის გადატვირთვა და არასაჭირო რესურსების მოხმარება.
ახლა, როდესაც თქვენ გაქვთ მოქმედი Docker და Kubernetes გარემო, მზად ხართ დაიწყოთ კონტეინერიზებული აპლიკაციების შექმნა, დეპლოიმენტი და მართვა! შემდეგ სექციებში ჩვენ განვიხილავთ, თუ როგორ შევქმნათ Docker იმეიჯები, ვიმუშაოთ კონტეინერებთან და გავუშვათ აპლიკაციები Kubernetes-ზე.
რას მიაღწიეთ
თქვენ ახლა გაქვთ სრულად ფუნქციონალური ლოკალური დეველოპმენტის გარემო:
Docker-ი კონტეინერების სამართავად
Minikube ლოკალური Kubernetes დეველოპმენტისთვის
kubectl Kubernetes კლასტერებთან ურთიერთობისთვის
აუცილებელი ხელსაწყოები კონტეინერიზებული აპლიკაციების დეველოპმენტისთვის
სად წავიდეთ შემდეგ
ისწავლეთ Docker-ის საფუძვლები და შექმენით თქვენი პირველი კონტეინერი