🚀 Task 14 — Docker Installation¶
📦 საჭირო პაკეტები¶
პირველ რიგში, განვაახლოთ პაკეტების სია და დავაყენოთ საჭირო დამოკიდებულებები:
| პაკეტი | დანიშნულება |
|---|---|
ca-certificates |
SSL სერტიფიკატების ნდობის ჯაჭვი — საჭიროა HTTPS კავშირებისთვის |
curl |
URL-ებიდან მონაცემების გადმოწერა |
gnupg |
GPG გასაღებების მართვა — რეპოზიტორიის ავთენტიფიკაციისთვის |
🔐 Docker-ის ოფიციალური რეპოზიტორიის დამატება¶
GPG გასაღების იმპორტი¶
Docker-ის პაკეტების ნამდვილობის შესამოწმებლად საჭიროა მათი GPG გასაღები:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
💡
--dearmorფლაგი ტექსტურ GPG გასაღებს ბინარულ ფორმატში გარდაქმნის, რაცapt-ს სჭირდება.
რეპოზიტორიის დამატება¶
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
ეს ბრძანება ავტომატურად ამოიცნობს სისტემის არქიტექტურას (amd64) და Ubuntu-ს ვერსიას (noble), შემდეგ კი შესაბამის რეპოზიტორიას დაამატებს.
🐳 Docker-ის ინსტალაცია
განვაახლოთ პაკეტების სია (ახალი რეპოზიტორიის ჩათვლით) და დავაყენოთ Docker:
sudo apt install docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin -y
რა დაინსტალირდება:
| პაკეტი | დანიშნულება |
|---|---|
docker-ce |
Docker Engine — ძირითადი სერვისი (daemon) |
docker-ce-cli |
Docker CLI — ბრძანებების ხაზის ინტერფეისი |
containerd.io |
კონტეინერების runtime — Docker-ის „ძრავი" |
docker-buildx-plugin |
გაფართოებული build შესაძლებლობები (multi-platform) |
docker-compose-plugin |
Docker Compose v2 — მრავალკონტეინერიანი აპლიკაციების მართვა |
📋 ინსტალაციის პროცესი (Output)¶
k@devserver:~$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
docker-ce-rootless-extras libslirp0 pigz slirp4netns
Suggested packages:
cgroupfs-mount | cgroup-lite docker-model-plugin
The following NEW packages will be installed:
containerd.io docker-buildx-plugin docker-ce docker-ce-cli docker-ce-rootless-extras docker-compose-plugin libslirp0 pigz slirp4netns
0 upgraded, 9 newly installed, 0 to remove and 2 not upgraded.
Need to get 96.7 MB of archives.
After this operation, 391 MB of additional disk space will be used.
Get:1 http://ge.archive.ubuntu.com/ubuntu noble/universe amd64 pigz amd64 2.8-1 [65.6 kB]
Get:2 https://download.docker.com/linux/ubuntu noble/stable amd64 containerd.io amd64 2.2.1-1~ubuntu.24.04~noble [23.4 MB]
Get:3 http://ge.archive.ubuntu.com/ubuntu noble/main amd64 libslirp0 amd64 4.7.0-1ubuntu3 [63.8 kB]
Get:4 http://ge.archive.ubuntu.com/ubuntu noble/universe amd64 slirp4netns amd64 1.2.1-1build2 [34.9 kB]
Get:5 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-ce-cli amd64 5:29.2.1-1~ubuntu.24.04~noble [16.3 MB]
Get:6 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-ce amd64 5:29.2.1-1~ubuntu.24.04~noble [22.5 MB]
Get:7 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-buildx-plugin amd64 0.31.1-1~ubuntu.24.04~noble [20.3 MB]
Get:8 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-ce-rootless-extras amd64 5:29.2.1-1~ubuntu.24.04~noble [6,387 kB]
Get:9 https://download.docker.com/linux/ubuntu noble/stable amd64 docker-compose-plugin amd64 5.0.2-1~ubuntu.24.04~noble [7,721 kB]
Fetched 96.7 MB in 14s (7,017 kB/s)
Selecting previously unselected package containerd.io.
(Reading database ... 89575 files and directories currently installed.)
Preparing to unpack ...
...
No VM guests are running outdated hypervisor (qemu) binaries on this host.
👤 User-ის დამატება Docker Group-ში¶
ნაგულისხმევად, Docker მოითხოვს sudo-ს. იმისათვის რომ ჩვეულებრივმა მომხმარებელმა Docker-ის ბრძანებები sudo-ს გარეშე გაუშვას, საჭიროა მისი docker ჯგუფში დამატება:
sodu-ს გარეშე მუშაობისთვის:
⚠️ მნიშვნელოვანი: ცვლილებები ძალაში შესვლისთვის საჭიროა ახალი სესიის დაწყება. ორი გზა არსებობს:
ვარიანტი A — მიმდინარე ტერმინალში:
ვარიანტი B — სრული სესიის განახლება (უფრო საიმედო):
ინსტალაციის შემოწმება¶
✅ შემოწმება (sudo-ს გარეშე)¶
k@devserver:~$ docker --version
Docker version 29.2.1, build a5c7197
k@devserver:~$ docker compose version
Docker Compose version v5.0.2
🧪 ტესტი — hello-world¶
Docker-ის სრული ფუნქციონალობის შესამოწმებლად გავუშვათ სატესტო კონტეინერი:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
17eec7bbc9d7: Pull complete
ea52d2000f90: Download complete
Digest: sha256:05813aedc15fb7b4d732e1be879d3252c1c9c25d885824f6295cab4538cb85cd
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
✅ თუ ეს შეტყობინება გამოჩნდა — Docker სწორად არის დაინსტალირებული და მუშაობს
sudo-ს გარეშე.
📖 დამატებითი ინფორმაცია¶
როგორ მუშაობს hello-world კულისებს მიღმა¶
flowchart TD
A["🖥️ <b>Docker CLI</b><br/>docker run hello-world"]
B["⚙️ <b>Docker Daemon</b><br/>ბრძანების მიღება"]
C{"🔍 არის image<br/>ლოკალურად?"}
D["🌐 <b>Docker Hub</b><br/>image-ის გადმოწერა"]
E["📦 <b>Image მზადაა</b><br/>hello-world:latest"]
F["🚀 <b>კონტეინერის შექმნა</b><br/>image-ისგან"]
G["📝 <b>Output</b><br/>Hello from Docker!"]
H["🛑 <b>კონტეინერი სრულდება</b><br/>exit code: 0"]
A -->|"1. ბრძანების გაგზავნა"| B
B -->|"2. image-ის ძებნა"| C
C -->|"❌ არა"| D
C -->|"✅ კი"| E
D -->|"3. Pull complete"| E
E -->|"4. კონტეინერის გაშვება"| F
F -->|"5. შეტყობინების ბეჭდვა"| G
G -->|"6. პროცესის დასრულება"| H
style A fill:#2496ED,stroke:#1a6fb5,color:#fff
style B fill:#2496ED,stroke:#1a6fb5,color:#fff
style C fill:#f59e0b,stroke:#d97706,color:#fff
style D fill:#8b5cf6,stroke:#7c3aed,color:#fff
style E fill:#10b981,stroke:#059669,color:#fff
style F fill:#2496ED,stroke:#1a6fb5,color:#fff
style G fill:#10b981,stroke:#059669,color:#fff
style H fill:#6b7280,stroke:#4b5563,color:#fff
- Docker CLI უგზავნის ბრძანებას Docker Daemon-ს
- Daemon ეძებს
hello-worldimage-ს ლოკალურად — ვერ პოულობს - Daemon გადმოწერს image-ს Docker Hub-იდან
- Daemon ქმნის კონტეინერს ამ image-ისგან და უშვებს
- კონტეინერი ბეჭდავს შეტყობინებას და სრულდება
📎 სასარგებლო ბმულები¶
- Docker Hub — კონტეინერების image-ების რეგისტრი
- Docker Documentation — ოფიციალური დოკუმენტაცია
- Docker Compose Docs — Compose-ის გზამკვლევი