Στο CoreOS, ρυθμίστε το δικό σας μητρώο Docker
Όλοι γνωρίζουμε και αγαπάμε το Docker, μια πλατφόρμα για τη δημιουργία, τη διαχείριση και τη διανομή κοντέινερ εφαρμογών σε πολλαπλά μηχανήματα. Η Docker Inc. παρέχει μια υπηρεσία t
Όλοι γνωρίζουμε και αγαπάμε το Docker, μια πλατφόρμα για τη δημιουργία, τη διαχείριση και τη διανομή κοντέινερ εφαρμογών σε πολλαπλά μηχανήματα. Η Docker Inc. παρέχει μια υπηρεσία για τη φιλοξενία κοντέινερ ανοιχτού κώδικα για λήψη (ή λήψη) όπως ένα αποθετήριο git γνωστό ως "Μητρώο Docker". Σκεφτείτε το σαν ένα GitHub για κοντέινερ Docker.
Τι γίνεται όμως αν θέλετε να φιλοξενήσετε το δικό σας μητρώο χωρισμένο από το δημόσιο; Λοιπόν, η Docker Inc. έχει την εφαρμογή μητρώου ανοιχτού κώδικα στο GitHub.
Αυτό το σεμινάριο θα σας οδηγήσει στη διαδικασία δημιουργίας ενός ιδιωτικού μητρώου Docker χρησιμοποιώντας το CoreOS σε ένα νέο VPS.
Δεν θα ξοδέψουμε πολύ χρόνο εξετάζοντας τι ακριβώς μπορούν να κάνουν το Docker και το CoreOS, καθώς δεν εμπίπτει στο πεδίο αυτού του σεμιναρίου. Στην ουσία, το CoreOS έχει σχεδιαστεί για τεράστια συμπλέγματα διακομιστών, είναι μικρό, γρήγορο και λαμβάνει αυτόματα τις τακτικές ενημερώσεις ασφαλείας. Το ριζικό σύστημα αρχείων του είναι επίσης μόνο για ανάγνωση, που σημαίνει ότι πρέπει να χρησιμοποιήσετε το Docker για να εκτελέσετε οποιοδήποτε είδος λογισμικού που δεν περιλαμβάνεται στη βασική εγκατάσταση.
Αυτό κάνει το Core OS ένα τέλειο σύστημα υποδοχής για το Docker!
Η Docker Inc. παρείχε το Μητρώο ως εικόνα ανώτατου επιπέδου, αυτό σημαίνει ότι μπορούμε να το κατεβάσουμε με ένα απλό:
docker pull registry
This can take a few minutes depending on the connection speed.
Το πλεονέκτημα ότι είναι εικόνα κορυφαίου επιπέδου σημαίνει επίσης ότι λαμβάνει τακτική υποστήριξη και ενημερώσεις.
Τώρα ας δοκιμάσουμε το μητρώο. Μπορούμε να δημιουργήσουμε ένα νέο κοντέινερ χρησιμοποιώντας την εικόνα μητρώου:
docker run -p 5000:5000 -d --name=basic_registry registry
Για όσους δεν έχουν χρησιμοποιήσει πολύ το Docker, η -p
σημαία σημαίνει PORT
, που σημαίνει ότι εκθέτουμε τη θύρα 5000 από το κοντέινερ στη θύρα κεντρικού υπολογιστή 5000.
Η -d
σημαία σημαίνει daemon
, αυτό θα κάνει το κοντέινερ να εκτελείται στο παρασκήνιο και να μην εκτυπώνεται στην τρέχουσα περίοδο λειτουργίας SSH, θέλουμε επίσης να ονομάσουμε αυτό το βασικό δοκιμαστικό κοντέινερ χρησιμοποιώντας την --name
επιλογή έτσι ώστε να μπορούμε να το διαχειριστούμε εύκολα αργότερα.
Βεβαιωθείτε ότι το βασικό κοντέινερ μητρώου σας εκτελείται χρησιμοποιώντας docker ps
. Η έξοδος πρέπει να μοιάζει με:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edfb54e4a8c4 registry:0.8.1 "/bin/sh -c 'exec do 7 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp basic_registry
Επίσης, επισκεφθείτε http://YOUR_IP:5000
το πρόγραμμα περιήγησής σας και θα λάβετε ένα μήνυμα όπως το ακόλουθο:
"docker-registry server (dev) (v0.8.1)"
Notice the word
dev
in the parenthesis. This means that the server is currently running the dev config. We'll look over more configuration soon.
Τώρα έχετε το δικό σας (πολύ βασικό) μητρώο κοντέινερ σε λειτουργία! Αλλά δεν έχουμε τελειώσει ακόμα.
Ίσως θέλετε να κρατήσετε αυτό το ιδιωτικό από τα αδιάκριτα βλέμματα ή ίσως να αποθηκεύσετε τις εικόνες σας στο Amazon S3 αντί για τοπική αποθήκευση. Ας δούμε τις διάφορες επιλογές διαμόρφωσης στην επόμενη ενότητα.
Πριν προχωρήσουμε, ας σκοτώσουμε το δοκιμαστικό κοντέινερ για να μην βρεθούμε σε αντικρουόμενες θύρες.
docker kill basic_registry
Υπάρχουν δύο τρόποι με τους οποίους μπορούμε να περάσουμε τις ρυθμίσεις στο Μητρώο Docker. Ένας τρόπος είναι να περάσετε μεταβλητές περιβάλλοντος σε ένα νέο κοντέινερ και ο άλλος είναι να προσθέσετε ένα αρχείο διαμόρφωσης.
Ακολουθούν μερικές από τις κοινές επιλογές διαμόρφωσης που θα χρησιμοποιήσουμε:
loglevel
- Ο ελάχιστος αριθμός πληροφοριών για σύνδεση στην κονσόλα. Η προεπιλογή είναι info
.standalone
- Πρέπει αυτό το Μητρώο να ενεργεί από μόνο του; (Ποτέ δεν τίθεται ερώτημα στο δημόσιο μητρώο.) Η προεπιλογή είναι true
.index_endpoint
- Εάν δεν είναι αυτόνομο, ποιο άλλο ευρετήριο θα αναζητήσουμε; Προεπιλογή index.docker.io
.cache
και cache_lru
- Επιλογές που σχετίζονται με τη χρήση προσωρινής μνήμης Redis για μικρά αρχεία, θα το αγγίξουμε αργότερα.storage
- Τι backend αποθήκευσης πρέπει να χρησιμοποιήσουμε για αυτόν τον διακομιστή; (Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε τοπικό).storage_path
- Εάν χρησιμοποιείτε τοπικό χώρο αποθήκευσης, ποιον κατάλογο πρέπει να χρησιμοποιήσουμε για να διατηρήσουμε τα αρχεία;Πριν αρχίσουμε να εργαζόμαστε με τη διαμόρφωση, χρειαζόμαστε ένα βασικό αρχείο για να εργαστούμε. Το αρχείο από το αποθετήριο Docker Registry στο GitHub θα λειτουργεί μια χαρά:
wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml
Το αρχείο θα πρέπει να αποθηκευτεί με επιτυχία με μια έξοδο όπως:
2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]
Εξαιρετική! Τώρα μπορούμε να τροποποιήσουμε αυτό το αρχείο για να ταιριάζει στις ανάγκες μας.
Το μόνο πρόγραμμα επεξεργασίας κειμένου που συνοδεύεται από το Core OS είναι vim
, αλλά μην ανησυχείτε αν δεν το έχετε χρησιμοποιήσει ποτέ πριν, αυτό θα εξηγήσει βήμα προς βήμα τι να επεξεργαστείτε και πώς να το κάνετε.
vim config_sample.yml
Μόλις ανοίξετε το αρχείο, πατήστε το I
και στην κάτω δεξιά γωνία θα εμφανιστεί: -- INSERT --
για λειτουργία εισαγωγής. Κάντε κύλιση μέχρι το κάτω μέρος του αρχείου χρησιμοποιώντας τα πλήκτρα βέλους, θα δείτε μια ενότητα με την ετικέτα prod
.
Θα αλλάξουμε τις δύο γραμμές, οι αλλαγές είναι παρακάτω
prod:
<<: *local
storage_path: _env:STORAGE_PATH:/data
Αυτό που κάναμε είναι να αλλάξουμε τη prod
διαμόρφωση ώστε να προκύπτει από την local
ενότητα αντί από την s3
ενότητα. Στη συνέχεια αντικαταστήσαμε το storage_path
για χρήση της διαδρομής /data
μέσα στο νέο κοντέινερ.
Αφού επιβεβαιώσετε ότι όλες οι αλλαγές είναι σωστές, πατήστε ESC
για έξοδο από τη λειτουργία εισαγωγής και πληκτρολογήστε :wq
(αυτό σημαίνει ότι γράψτε τις αλλαγές στο αρχείο και κλείστε το vim.)
Τώρα ας μετονομάσουμε το αρχείο σε just config.yml
mv config_sample.yml config.yml
Εάν θέλετε να χρησιμοποιήσετε το redis για να επιταχύνετε το μητρώο κοντέινερ, είναι τόσο απλό όσο να τραβήξετε ένα νέο κοντέινερ από το δημόσιο μητρώο και να προσθέσετε μερικές ακόμη γραμμές διαμόρφωσης.
Πρώτα, τραβήξτε την εικόνα ανώτατου επιπέδου του Redis:
docker pull redis
Μόλις τραβηχτεί με επιτυχία η εικόνα, μπορούμε να την εκτελέσουμε και να την ονομάσουμε ακριβώς όπως κάναμε με το μητρώο δοκιμών:
docker run -d --name registry-redis redis
Επειδή το redis βρίσκεται στη μνήμη, δεν χρειάζεται να κάνουμε καμία ρύθμιση για αυτό, καθώς θα το συνδέσουμε με το κοντέινερ μητρώου σε επόμενα βήματα.
Για άλλη μια φορά, βεβαιωθείτε ότι εκτελείται χρησιμοποιώντας docker ps
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
54f65641eccf redis:2.8 "redis-server" 2 seconds ago Up 1 seconds 6379/tcp registry-redis
Τώρα ανοίξτε ξανά το config.yml
in vim
και μπείτε στη λειτουργία εισαγωγής όπως την πρώτη φορά που το επεξεργαστήκαμε.
Προσθέστε τις ακόλουθες γραμμές κάτω από την prod
ενότητα, φροντίζοντας να έχετε τη σωστή εσοχή. Αυτή τη φορά προσθέτουμε μόνο cache
και cache_lru
.
cache:
host: _env:REDIS_PORT_6379_TCP_ADDR
port: _env:REDIS_PORT_6379_TCP_PORT
db: 0
cache_lru:
host: _env:REDIS_PORT_6379_TCP_ADDR
port: _env:REDIS_PORT_6379_TCP_PORT
db: 1
Οι μεταβλητές περιβάλλοντος REDIS_PORT_6379_TCP_ADDR
και REDIS_PORT_6379_TCP_PORT
έχουν περάσει στο δοχείο μητρώο κατά την σύνδεση με το δοχείο Ρέντη.
Με αυτό, έχετε πλέον ρυθμίσει ένα κοντέινερ Redis που θα λειτουργεί χέρι-χέρι με το κοντέινερ μητρώου σας. Τώρα στη δημιουργία του μητρώου!
Έχουμε όλες τις ρυθμίσεις παραμέτρων και έτοιμες, τώρα πρέπει να δημιουργήσουμε το πραγματικό κοντέινερ μητρώου.
Φωτιά μέχρι vim Dockerfile
να δημιουργηθεί μια νέα Dockerfile. Μπείτε στη λειτουργία εισαγωγής και ακολουθήστε τις παρακάτω τροποποιήσεις.
FROM registry:latest
# Add the custom configuration file we made
ADD ./config.yml /docker-registry/config/config.yml
# Create the data directory
RUN mkdir /data
# Set the configuration file to config.yml
env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
# Make sure we use the prod configuration settings
env SETTINGS_FLAVOR prod
Αυτό που κάναμε παραπάνω είναι ουσιαστικά η επέκταση της εικόνας του μητρώου, ώστε να χρησιμοποιεί το αρχείο ρυθμίσεων και τις ρυθμίσεις μας. Ένα Dockerfile είναι ένα σύνολο οδηγιών κατασκευής για ανάγνωση και κατασκευή του Docker. Εάν θέλετε να μάθετε περισσότερα σχετικά με τα Dockerfiles και τη σύνταξή τους, ρίξτε μια ματιά στην επίσημη τεκμηρίωση του ιστότοπου Docker.
Στη συνέχεια πρέπει να φτιάξουμε το δοχείο για χρήση.
docker build -t my_registry .
Sending build context to Docker daemon 13.82 kB
Sending build context to Docker daemon
Step 0 : FROM registry
---> e42d15ec8417
Step 1 : ADD ./config.yml /docker-registry/config/config.yml
---> 4339f026d459
Removing intermediate container 2d5138fbcd34
Step 2 : RUN mkdir /data
---> Running in a090f0bdbfd1
---> 8eb27ba6e12a
Removing intermediate container a090f0bdbfd1
Step 3 : env DOCKER_REGISTRY_CONFIG /docker-registry/config/config.yml
---> Running in 565b5bfb2b22
---> 914462e46dc0
Removing intermediate container 565b5bfb2b22
Step 4 : env SETTINGS_FLAVOR prod
---> Running in 31a92847b851
---> b5949575c374
Removing intermediate container 31a92847b851
Successfully built b5949575c374
Τώρα είμαστε έτοιμοι να τρέξουμε!
Ας δημιουργήσουμε έναν κατάλογο στο κεντρικό μας σύστημα για να το προσαρτήσουμε στο κοντέινερ ως /data
τόμο.
mkdir registry-data
Τώρα μπορούμε να γυρίσουμε ένα νέο δοχείο. Εάν σκοπεύετε να χρησιμοποιήσετε την προσωρινή μνήμη Redis, χρησιμοποιήστε τη 2η εντολή παρακάτω.
# For a non-Redis cache registry
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg my_registry
# For a Redis cached registry (Must have followed Redis Caching section above)
docker run -d -p 5000:5000 -v /home/core/registry-data:/data --name=private_reg --link registry-redis:redis my_registry
Για να βεβαιωθείτε ότι ο διακομιστής σας λειτουργεί σωστά, επισκεφτείτε το http://YOUR_IP:5000
. Θα δείτε το ακόλουθο μήνυμα:
"docker-registry server (prod) (v0.8.1)"
Παρατηρήστε (prod)
ότι οι αλλαγές διαμόρφωσης ήταν επιτυχείς!
Τώρα που έχουμε το δικό μας τρέχον μητρώο, θέλουμε να αρχίσει να το χρησιμοποιεί ο πελάτης Docker στους τοπικούς μας υπολογιστές. Συνήθως θα χρησιμοποιούσατε την εντολή: docker login
, αλλά για τη δική μας χρήση, πρέπει να προσθέσουμε ένα ακόμη όρισμα στην εντολή σύνδεσης:
docker login YOUR_IP:5000
Εισαγάγετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης (σκεφτείτε το σαν να δημιουργήσετε έναν νέο λογαριασμό) και αγνοήστε το μήνυμα που αναφέρει ότι πρέπει να τον ενεργοποιήσετε.
Στη συνέχεια, ας τραβήξουμε μια εικόνα στοκ και ας την προωθήσουμε στο δικό μας αποθετήριο.
# Pull the busybox image from the public registry
docker pull busybox
# Tag it with our IP/URL
docker tag busybox YOUR_IP:5000/busybox
# Push it to our newly made registry
docker push YOUR_IP:5000/busybox
Εάν όλα πάνε σωστά, το τελικό μήνυμα θα πρέπει να είναι σύμφωνα με τις γραμμές:
Pushing tag for rev [a9eb17255234] on
Συγχαρητήρια! Έχετε ρυθμίσει το δικό σας αποθετήριο docker.
Ακολουθούν μερικές ιδέες για το πώς να βελτιώσετε το νέο σας ιδιωτικό μητρώο:
Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.
Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.
Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.
Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.
Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…
Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.
Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.
Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.
Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.
Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα