Το Docker είναι μια μηχανή container εφαρμογών ανοιχτού κώδικα που επιτρέπει στους προγραμματιστές να πακετάρουν τις εφαρμογές τους και τις εξαρτήσεις τους σε ένα φορητό image, το οποίο μπορεί στη συνέχεια να δημοσιευτεί σε οποιοδήποτε δημοφιλές μηχάνημα Linux ή Windows, επιτυγχάνοντας εικονικοποίηση. Τα containers χρησιμοποιούν έναν μηχανισμό sandbox και είναι πλήρως απομονωμένα μεταξύ τους.
Γενική Χρήση
Εκκίνηση ενός container στο παρασκήνιο
docker run -d jenkins
Εκκίνηση ενός διαδραστικού container
docker run -it ubuntu bash
Εκκίνηση ενός container που διαγράφεται αυτόματα όταν σταματά
docker run --rm ubuntu bash
Εκκίνηση ενός container με αντιστοίχιση θυρών
docker run -p 80:80 -d nginx
Εκκίνηση ενός container με όνομα
docker run --name mydb redis
Εκκίνηση ενός σταματημένου container
docker start mydb
Διακοπή ενός container
docker stop mydb
Εκκίνηση ενός container και προσθήκη μεταδεδομένων
docker run -d \ label=traefik.backend=jenkins jenkins
Κατασκευή Images
Κατασκευή ενός image από το Dockerfile στον τρέχοντα κατάλογο
docker build --tag myimage .
Αναγκαστική ανακατασκευή ενός image
docker build --no-cache .
Μετατροπή ενός container σε image
docker commit c7337 myimage
Διαγραφή όλων των αχρησιμοποίητων images
docker rmi $(docker images -q -f "dangling=true")
Εντοπισμός Σφαλμάτων
Σύνδεση σε ένα container που εκτελείται
docker exec -it c7337 docker
Εμφάνιση αρχείων καταγραφής δραστηριότητας ενός container που εκτελείται ως δαίμονας
docker logs -f c7337
Εμφάνιση των εκτεθειμένων θυρών του container
docker port c7337
Volumes & Δικτύωση
Δημιουργία τοπικού volume
docker volume create --name myvol
Προσάρτηση ενός volume κατά την εκκίνηση του container
docker run -v myvol:/data redis
Καταστροφή ενός volume
docker volume rm myvol
Λίστα όλων των volumes
docker volume ls
Δημιουργία τοπικού δικτύου
docker network create mynet
Σύνδεση container στο δίκτυο κατά την εκκίνηση
docker run -d --net mynet redis
Σύνδεση container σε συγκεκριμένο δίκτυο
docker network connect mynet c7337
Αποσύνδεση container από το δίκτυο
docker network disconnect mynet c7337
Διαχείριση Container
Λίστα εκτελούμενων containers
docker ps
Λίστα όλων των containers (συμπεριλαμβανομένων αυτών που εκτελούνται και αυτών που έχουν σταματήσει)
docker ps -a
Επιθεώρηση μεταδεδομένων container
docker inspect c7337
Λίστα όλων των διαθέσιμων τοπικών images
docker images
Διαγραφή όλων των σταματημένων containers
docker rm $(docker ps --filter status=exited -q)
Λίστα όλων των containers με συγκεκριμένη ετικέτα
docker ps --filter label=traefik.backend
Ερώτημα για τη διεύθυνση IP ενός εκτελούμενου container
docker inspect -f '{{ .NetworkSettings.IPAddress }}' c7337
Περιγραφή
Όνομα Image
redis, jenkins, nginx
Όνομα Container ή ID Commit
mydb # Όνομα Container
c7337 # ID Commit