📋 Στόχοι Μαθήματος
Στο τέλος του μαθήματος ο φοιτητής θα μπορεί να:
- Εξηγεί τι είναι το Docker και γιατί το χρησιμοποιούμε
- Κατανοεί τη διαφορά μεταξύ Image και Container
- Εγκαθιστά το Docker Desktop στον υπολογιστή του
- Δημιουργεί containers με διάφορα images (Apache, Ubuntu)
- Εγκαθιστά τον GCC compiler μέσα σε Ubuntu container
- Μεταγλωττίζει και εκτελεί προγράμματα C μέσα στο container
🛠️ Το Περιβάλλον Ανάπτυξης
Για να γράψεις και να τρέξεις προγράμματα σε C, χρειάζεσαι:
- GCC Compiler – Μετατρέπει τον κώδικα C σε εκτελέσιμο πρόγραμμα
- Text Editor – Για να γράψεις τον κώδικα (VS Code, Notepad++, κτλ)
- Terminal – Για να τρέξεις εντολές compile και execute
- Διαφορετική εγκατάσταση σε Windows / Mac / Linux
- Προβλήματα συμβατότητας εκδόσεων
- "Στον υπολογιστή μου δουλεύει!" 😤
- Δύσκολη εγκατάσταση σε Windows
- Ίδιο περιβάλλον παντού (Windows, Mac, Linux)
- Εύκολη εγκατάσταση με μία εντολή
- Καμία σύγκρουση με το λειτουργικό σύστημα
- Επαγγελματικό περιβάλλον ανάπτυξης
🐳 Τι είναι το Docker (Θεωρητικά)
Το Docker είναι μια πλατφόρμα που επιτρέπει τη δημιουργία απομονωμένων περιβαλλόντων (containers) για την εκτέλεση εφαρμογών.
- Image = Το αρχιτεκτονικό σχέδιο του σπιτιού (blueprint)
- Container = Το πραγματικό σπίτι που χτίστηκε από το σχέδιο
Από ένα σχέδιο μπορείς να χτίσεις πολλά σπίτια!
Διαφορά Image vs Container
| Image | Container |
|---|---|
| 📦 "Πακέτο" με όλα τα απαραίτητα | 🏃 Το image σε εκτέλεση |
| Στατικό (δεν αλλάζει) | Δυναμικό (τρέχει, σταματά) |
| Αποθηκεύεται στο Docker Hub | Τρέχει στον υπολογιστή σου |
Παράδειγμα: gcc:latest |
Παράδειγμα: my-gcc-container |
"Πακέτο" με GCC, Linux, βιβλιοθήκες
Το image "τρέχει" - μπορείς να κάνεις compile!
- Πώς να τρέξει containers
- Πώς να διαχειριστεί δίκτυα και αρχεία
- Πώς να απομονώσει διεργασίες
- Τι είναι η C ή ο GCC
- Πώς να κάνει compile τον κώδικά σου
- Τι κάνει το πρόγραμμά σου
🖐️ Hands-on: Πρακτική Εγκατάσταση Docker
Ας δούμε βήμα-βήμα πώς εγκαθιστούμε και χρησιμοποιούμε το Docker στην πράξη.
Επισκεφθείτε την επίσημη σελίδα εγκατάστασης ανάλογα με το λειτουργικό σας:
- Mac:
https://docs.docker.com/desktop/setup/install/mac-install/ - Windows:
https://docs.docker.com/desktop/setup/install/windows-install/ - Linux:
https://docs.docker.com/desktop/setup/install/linux/
Ακολουθήστε τις οδηγίες του installer για το λειτουργικό σας σύστημα.
Ανοίξτε το Docker Desktop και επιβεβαιώστε ότι τρέχει:
Θα δημιουργήσουμε δύο containers με Apache σε διαφορετικές θύρες για να δούμε πώς λειτουργεί η απομόνωση!
🔹 Container 1 – Apache στη θύρα 8090
http://localhost:8090
🔹 Container 2 – Apache στη θύρα 8091
http://localhost:8091
- Δύο ανεξάρτητοι Apache servers τρέχουν ταυτόχρονα
- Χρησιμοποιούν το ίδιο image (httpd:2.4) αλλά είναι διαφορετικά containers
- Κάθε ένα ακούει σε διαφορετική θύρα (8090 vs 8091)
- Είναι πλήρως απομονωμένα μεταξύ τους!
🔹 Container 3 – Ubuntu με πολλαπλές θύρες
Ας δημιουργήσουμε ένα τρίτο container με Ubuntu 24.04 που θα έχει δύο port mappings:
📖 Επεξήγηση εντολών
sleep infinity;
Το Ubuntu image δεν έχει κάποια υπηρεσία που τρέχει by default. Χωρίς το sleep infinity, το container θα σταματούσε αμέσως! Με αυτή την εντολή, το container μένει ανοιχτό και μπορούμε να μπούμε μέσα και να εγκαταστήσουμε ό,τι θέλουμε.
Είσοδος στο Ubuntu container
Τώρα μπορείς να εγκαταστήσεις τον GCC compiler:
Τώρα έχεις τον GCC compiler εγκατεστημένο και μπορείς να κάνεις compile προγράμματα C!
- httpd:2.4 → Έτοιμο image με Apache προεγκατεστημένο και ρυθμισμένο
- ubuntu:24.04 → "Καθαρό" λειτουργικό, εσύ εγκαθιστάς ό,τι θέλεις
Το Ubuntu σου δίνει πλήρη έλεγχο αλλά απαιτεί περισσότερη δουλειά!
🗂️ Διαχείριση των Containers
💻 Compile και Εκτέλεση Προγράμματος C
Τώρα που έχουμε τον GCC εγκατεστημένο στο Ubuntu container, ας κάνουμε compile ένα πρόγραμμα!
Βήμα 1: Δημιουργία αρχείου C μέσα στο container
Μέσα στο container (αφού έχεις κάνει docker exec -it my-ubuntu bash), δημιούργησε ένα αρχείο:
Ή αν προτιμάς, χρησιμοποίησε έναν editor:
Και γράψε τον κώδικα:
Βήμα 2: Compile το πρόγραμμα
gcc→ Ο compilerhello.c→ Το αρχείο πηγαίου κώδικα-o hello→ Output: δημιουργεί εκτελέσιμο με όνομα "hello"
Βήμα 3: Εκτέλεση του προγράμματος
Μόλις έκανες compile και έτρεξες ένα πρόγραμμα C μέσα στο Docker!
Βήμα 4: Έξοδος από το container
🗂️ Διαχείριση του Container
📦 Μεταφορά Container
Μπορείς να μεταφέρεις το container που έφτιαξες σε άλλον υπολογιστή!
🔹 Μετατρέπεις το container σε image
1️⃣ Στον υπολογιστή σου
Παίρνει το τρέχον container (Ubuntu + GCC) και το αποθηκεύει σαν Docker image.
2️⃣ Αποθήκευση σε αρχείο
👉 Δημιουργεί αρχείο my-gcc.tar
3️⃣ Μεταφορά σε άλλον υπολογιστή
- με USB
- με SCP
- με cloud (Drive κτλ)
4️⃣ Στον άλλο υπολογιστή
(με Docker Desktop εγκατεστημένο)
5️⃣ Τρέχεις το container
Τώρα έχεις το ίδιο περιβάλλον ανάπτυξης C σε οποιονδήποτε υπολογιστή!
📝 Σύνοψη Εντολών
| Εντολή | Περιγραφή |
|---|---|
docker run -d --name my-ubuntu ... |
Δημιουργία νέου container |
docker exec -it my-ubuntu bash |
Είσοδος στο container |
apt-get install gcc |
Εγκατάσταση GCC compiler |
gcc file.c -o output |
Compile αρχείου C |
./output |
Εκτέλεση προγράμματος |
docker stop my-ubuntu |
Σταμάτημα container |
docker start my-ubuntu |
Εκκίνηση container |
docker rm my-ubuntu |
Διαγραφή container |