Με την εισαγωγή του Υποσυστήματος Windows για Linux (WSL), η Microsoft έδωσε την ευκαιρία στους προγραμματιστές να τρέξουν ένα περιβάλλον GNU/Linux απευθείας στα Windows, χωρίς τροποποιήσεις, χωρίς την επιβάρυνση μιας εικονικής μηχανής. Αυτή είναι μια εξαιρετική λύση, επειδή πολλοί προγραμματιστές χρησιμοποιούν ένα σύστημα για προγραμματισμό και ένα άλλο για ψυχαγωγία.
Το WSL βρίσκεται ακόμη υπό ανάπτυξη, αλλά επί του παρόντος είναι κατάλληλο για σύγχρονες ανάπτυξη λογισμικού, τόσο στην πρώτη όσο και στη δεύτερη έκδοση. Ψάχνοντας τα προβλήματα και τις ερωτήσεις που αναφέρθηκαν στο διαδίκτυο, τα περισσότερα από αυτά φαίνεται να αφορούν την ενσωμάτωση του WSL με το Docker, ειδικά όταν πρόκειται για αναβάθμιση από το WSL 1 στο WSL 2.
Αυτό το άρθρο θα διαλύσει όλες τις ασάφειες και θα σας βοηθήσει να περάσετε ανώδυνα αυτή τη διαδικασία. Αν δεν έχετε WSL 1 και θέλετε να έχετε WSL 2 με Docker, μπορείτε να μεταβείτε κατευθείαν στο τελευταίο κεφάλαιο.
Τι θα κερδίσετε;
- Πραγματικός τελευταίος σταθερός πυρήνας Linux (ρυθμισμένος από τη Microsoft). Το WSL 1 διαθέτει μια συμβατή με το Linux διεπαφή πυρήνα χωρίς τον πυρήνα Linux. κωδικός.
- Αυξημένη απόδοση IO αρχείων. Έως και 20 φορές ταχύτερη σε σύγκριση με το WSL 1 κατά την αποσυσκευασία ενός zipped tarball, περίπου 2-5 φορές ταχύτερη όταν χρησιμοποιείται κλώνος git
, εγκατάσταση npm
και cmake
σε διάφορα έργα.
- Πλήρης συμβατότητα κλήσεων συστήματος. Τα δυαδικά προγράμματα του Linux χρησιμοποιούν κλήσεις συστήματος για την εκτέλεση πολλών λειτουργιών, όπως η πρόσβαση σε αρχεία, η αίτηση μνήμης, η δημιουργία διεργασιών και πολλά άλλα. Ενώ το WSL 1 χρησιμοποιούσε ένα επίπεδο μετάφρασης που κατασκευάστηκε από το WSL ομάδα, το WSL 2 περιλαμβάνει τον δικό του πυρήνα Linux με πλήρη συμβατότητα κλήσεων συστήματος.
- Αρχεία αποθηκευμένα σε μια εγγενή κατάτμηση ext4 σε έναν εικονικό δίσκο.
- Πολύ εύκολος τρόπος ενσωμάτωσης με το Docker.
Νομίζω ότι για τους περισσότερους χρήστες η απόδοση του file IO και η εύκολη ενσωμάτωση του docker ακούγονται ως επαρκείς λόγοι.
Πάμε!
Υποθέτω ότι έχετε την τελευταία σταθερή έκδοση των Windows 10 Pro. Για σήμερα, πρόκειται για την έκδοση 1909.
Ενταχθείτε στους γνώστες των Windows
Επί του παρόντος, το WSL 2 είναι διαθέσιμο μόνο για τα Windows 10 στο αργό δακτύλιο των insiders. Απ' όσο γνωρίζω, η σταθερή έκδοση θα είναι διαθέσιμη τον Μάιο του 2020 (έκδοση 20H1). Το slow ring είναι μια αρκετά ασφαλής λύση για τους χρήστες που θέλουν να έχουν νέα χαρακτηριστικά λίγο νωρίτερα, ήδη προ-δοκιμασμένα από τους χρήστες του fast ring. Ο αργός δακτύλιος λαμβάνει ενημερώσεις συστήματος έως και μία ή δύο φορές το μήνα. Μπορείτε να διαβάσετε σχετικά με τις αλλαγές στην έκδοση των insiders στο έγγραφο της Microsoft με την ονομασία Κόμβος πτήσης.
Για να συμμετάσχετε, απλώς ακολουθήστε την επίσημη σελίδα της Microsoft οδηγός. Είναι πολύ εύκολο και διαρκεί περίπου 15 λεπτά χωρίς να χάσετε προσωπικά δεδομένα.
Αναβάθμιση WSL 1 σε WSL 2
Ακολουθήστε το επίσημο οδηγός. Είναι επίσης πολύ εύκολο, μερικές εντολές του κελύφους και είστε έτοιμοι! Ανάλογα με το πόσο εκτεταμένο ήταν το Linux σας κάτω από το WSL 1, αυτό μπορεί να πάρει λίγο χρόνο. Δυστυχώς, η Microsoft δεν έχει τοποθετήσει μια μπάρα προόδου ή πληροφορίες σχετικά με τον απαιτούμενο χρόνο, οπότε κάντε υπομονή.
Καθαρισμός
Αυτό είναι το πιο σημαντικό μέρος για τη σωστή συνεργασία του WSL 2 και του Docker. Μετά την αναβάθμιση στο WSL 2, πολλοί χρήστες προσπαθούν να αναγκάσουν την έκδοση του Docker να συνεργαστεί χωρίς να συνειδητοποιούν ότι η ομάδα του Docker, ειδικά για το WSL 2, έχει ετοιμάσει μια έκδοση που θα κάνει τα πάντα για εμάς. Αυτή είναι η τελευταία έκδοση της έκδοσης Docker Edge (το beta όνομά τους) - "Docker Desktop WSL 2 backend". Αυτή η έκδοση, 2.1.7.0, είναι μια καλά επεξεργασμένη και είναι υποψήφια για την επερχόμενη σταθερή έκδοση.
Οι χρήστες που δεν είχαν το WSL 1 ή μόλις εγκατέστησαν μια νέα έκδοση του WSL 2 είναι τυχεροί και μπορούν να μεταβούν αμέσως στο τελευταίο κεφάλαιο.
Αν δεν έχετε καθαρίσει το Docker σας (καθόλου ή σωστά) και δεν έχετε εγκαταστήσει την κατάλληλη έκδοση του Docker για το WSL 2, μπορεί να αντιμετωπίσετε κάποια κοινά σφάλματα, π.χ, Cannot connect to the Docker daemon at tcp://localhost:2375", "Εκτελείται ο δαίμονας Docker
, κ.λπ. Στις περισσότερες περιπτώσεις, θα χάσετε χρόνο αν δεν γνωρίζετε ότι πρέπει να ακολουθήσετε μια νέα προσέγγιση στην προσπάθεια επίλυσης αυτών των σφαλμάτων. Για να το κάνετε αυτό, πρέπει πρώτα να αφαιρέσετε εντελώς το Docker από το WSL και τα Windows, κάτι που δεν είναι προφανές βήμα.
Το πιο συνηθισμένο παράδειγμα ακατάσχετων υπολειμμάτων είναι η παλιά προσέγγιση του Docker για τον ορισμό της μεταβλητής περιβάλλοντος DOCKER_HOST=tcp://localhost:2375
στο πλαίσιο του WSL 1 για συνεργασία με την επιλογή Windows Docker Έκθεση του δαίμονα στο tcp://localhost:2375 χωρίς TLS
.
Πώς να αφαιρέσετε εντελώς το Docker από το WSL (Ubuntu);
- Ως το επίσημο Docker έγγραφα λένε:
sudo apt-get remove docker docker-engine docker.io containerd runc
Σίγουρα, μπορείτε να προσθέσετε σε αυτόν τον κατάλογο docker-ce
και docker-ce-cli
.
- Προσδιορίστε όλα τα πακέτα docker που έχετε με
dpkg -l | grep -i docker
και αφαιρέστε εάν υπάρχουν ακόμη.
- Αφαιρέστε όλα τα υπολείμματα:
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Αυτό το βήμα είναι για προχωρημένους χρήστες, γι' αυτό να είστε προσεκτικοί. Πιθανώς δεν χρειάζεται να το κάνετε.
Βρείτε όλα docker
λέξεις και αφαιρέστε αυτές για τις οποίες είστε σίγουροι.
sudo find / -name "*docker*"
- Ελέγξτε το περιεχόμενο όλων των παρακάτω αρχείων για
docker
περιστατικά όπως π.χ. μεταβλητή περιβάλλοντος DOCKER_HOST=tcp://localhost:2375
.
Μπορείτε να επεξεργαστείτε αυτά τα αρχεία με τον επεξεργαστή Nano, nano ~/.bashrc
, ή Visual Studio Code, κωδικός ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profile
/etc/bash.bashrc
/etc/profile
Πώς να αφαιρέσετε εντελώς το Docker από τα Windows;
- Απεγκατάσταση με κανονικό τρόπο με τα Windows
Εφαρμογές και χαρακτηριστικά
πάνελ.
- Αφαιρέστε όλα τα παρακάτω εάν υπάρχουν:
C:Program FilesDocker
C:ProgramDataDockerDesktop
C:Users[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Τι ακολουθεί;
Εγκαταστήστε την τελευταία έκδοση του Docker Desktop Edge από εδώ και ακολουθήστε τα βήματα από το επίσημο έγγραφα. Πραγματικά καταλήγει σε μερικά κλικ.
Αν όλα πάνε καλά, θα πρέπει να έχετε την έξοδό σας από το wsl -l -v
όπως αυτό:
ΌΝΟΜΑ ΚΑΤΆΣΤΑΣΗ ΈΚΔΟΣΗ
Ubuntu-18.04 Τρέχει 2
docker-desktop Τρέχει 2
docker-desktop-data Τρέχει 2
Αυτό είναι όλο. Το Docker έχει δημιουργήσει τα δικά του WSL containers docker-desktop
και docker-desktop-data
. Μερικά από τα διαθέσιμα σεμινάρια ή συμβουλές μπορεί να προκαλέσουν σύγχυση επειδή αυτή τη φορά δεν θα πρέπει να εγκαταστήσετε ή να ρυθμίσετε οτιδήποτε σχετικό με το Docker κάτω από τη διανομή WSL Linux σας. Είναι πολύ σημαντικό να θυμάστε. Μετά τον καθαρισμό, θα πρέπει να λειτουργεί καλά αμέσως.
Επιπλέον...
Η εγκατάσταση του WSL 2 με το Docker μπορεί να είναι μια ανώδυνη διαδικασία με μερικά απλά βήματα. Ξεκινήστε με την ενημέρωση λίστες πακέτων χρησιμοποιώντας την εντολή "sudo apt-get update" για να βεβαιωθείτε ότι έχετε τις τελευταίες πληροφορίες έκδοσης. Επιλύστε τυχόν εξαρτήσεις που λείπουν με το "sudo apt-get install -y build-essential" για μια ομαλή εμπειρία εγκατάστασης. Εγκαταστήστε το Μηχανή Docker με "sudo apt-get install -y docker-engine" για να κατασκευάζετε, να εκτελείτε και να διαχειρίζεστε κοντέινερ χωρίς κόπο. Εκτελέστε το "sudo docker run" ακολουθούμενο από το όνομα της εικόνας για να εκκινήσετε τα κοντέινερ. Για να διατηρήσετε το περιβάλλον σας βελτιστοποιημένο, εκτελείτε περιοδικά το "sudo docker system prune" για να αφαιρέσετε αχρησιμοποίητα κοντέινερ και να ελευθερώσετε χώρο στο δίσκο. Με αυτά τα βήματα, μπορείτε να απολαμβάνετε την απρόσκοπτη ενσωμάτωση του WSL 2 και του Docker για αποδοτική διαχείριση εμπορευματοκιβωτίων στη ροή εργασίας της ανάπτυξής σας.