Junior
როგორ გაქვთ გამოცდილება Docker-თან?
sobes.tech AI
პასუხი AI-სგან
5 წელზე მეტი აქტიური Docker-ის გამოყენება სხვადასხვა პროექტებში.
გამოცდილება მოიცავს:
- Dockerfile-ის შექმნა: ოპტიმიზირებული და მრავალსაფეხურიანი Dockerfile-ების შექმნა აპლიკაციების იმიჯებისთვის (ვებ, მიკროწესვერები, მონაცემთა ბაზები და ა.შ.).
- იმიჯების მართვა: მუშაობა Docker Hub-თან, პირად რეპოზიტორიებთან (GitLab Registry, Nexus), ტეგების დადება, ვერსიების მართვა, არასაჭირო იმიჯების გასუფთავება.
- კონტეინერებთან მუშაობა: გაშვება, შეჩერება, გადატვირთვა, მდგომარეობის მონიტორინგი, ლოგების ნახვა, ბრძანებების შესრულება კონტეინერის შიგნით (
docker exec). - Docker Compose: გამოყენება მრავალკონტეინერული აპლიკაციების განსაზღვრისა და გაშვების, სერვისების ორქესტრაციის, ქსელებისა და ტომების მართვისთვის.
- Docker ქსელები: სხვადასხვა ქსელური დრაივერების (bridge, host, overlay) გაგება და კონფიგურაცია, მომხმარებლის მიერ განსაზღვრული ქსელების შექმნა სერვისების იზოლაციისთვის.
- Docker ტომები: სახელწოდებით ტომების და bind mounts-ის გამოყენება მონაცემების შენახვა, ფაილების გაცვლა ჰოსტსა და კონტეინერს შორის.
- Docker უსაფრთხოება: კონტეინერების იზოლაციის საფუძვლების გაგება, rootless Docker-ის გამოყენება (სადაც შესაძლებელია), იმიჯების სქანირება სიფხიზლისთვის.
- CI/CD-ის ინტეგრაცია: Docker იმიჯების შექმნა და გამოქვეყნება CI/CD პაიპლაინებში (Jenkins, GitLab CI, GitHub Actions).
- ორქესტრაცია (ძირითადი ცოდნა): Kubernetes-ის მუშაობის პრინციპების ზოგადი გაგება (კონტეინერების განთავსება, პოდები, რეპლიკაციები, სერვისები), მარტივი აპლიკაციების გაშვება minikube/Kind-ში ტესტირების მიზნით.
Docker Compose-ის გამოყენების მაგალითები:
# docker-compose.yaml
version: '3.8'
services:
app:
build: . # მიმდინარე დირექტორიდან იმიჯის შექმნა
ports:
- "80:80" # ჰოსტის 80 პორტიდან კონტეინერის 80 პორტზე გადაცემა
environment:
DATABASE_URL: postgres://user:password@db:5432/mydatabase # გარემოს ცვლადები
depends_on:
- db # დამოკიდებულება db სერვისზე
db:
image: postgres:14 # სტანდარტული postgres იმიჯის გამოყენება
volumes:
- db_data:/var/lib/postgresql/data # სახელწოდებით ტომი
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
volumes:
db_data: # სახელწოდებით ტომის განსაზღვრა