Sobes.tech
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: # სახელწოდებით ტომის განსაზღვრა