Στο CoreOS, ρυθμίστε το δικό σας μητρώο Docker

Στο CoreOS, ρυθμίστε το δικό σας μητρώο Docker

Όλοι γνωρίζουμε και αγαπάμε το Docker, μια πλατφόρμα για τη δημιουργία, τη διαχείριση και τη διανομή κοντέινερ εφαρμογών σε πολλαπλά μηχανήματα. Η Docker Inc. παρέχει μια υπηρεσία για τη φιλοξενία κοντέινερ ανοιχτού κώδικα για λήψη (ή λήψη) όπως ένα αποθετήριο git γνωστό ως "Μητρώο Docker". Σκεφτείτε το σαν ένα GitHub για κοντέινερ Docker.

Τι γίνεται όμως αν θέλετε να φιλοξενήσετε το δικό σας μητρώο χωρισμένο από το δημόσιο; Λοιπόν, η Docker Inc. έχει την εφαρμογή μητρώου ανοιχτού κώδικα στο GitHub.

Αυτό το σεμινάριο θα σας οδηγήσει στη διαδικασία δημιουργίας ενός ιδιωτικού μητρώου Docker χρησιμοποιώντας το CoreOS σε ένα νέο VPS.

CoreOS + Docker

Δεν θα ξοδέψουμε πολύ χρόνο εξετάζοντας τι ακριβώς μπορούν να κάνουν το 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 caching (προαιρετικό)

Εάν θέλετε να χρησιμοποιήσετε το 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.ymlin 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 στους τοπικούς μας υπολογιστές. Συνήθως θα χρησιμοποιούσατε την εντολή: 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.

Τι έπεται?

Ακολουθούν μερικές ιδέες για το πώς να βελτιώσετε το νέο σας ιδιωτικό μητρώο:

  • Αντιστρέψτε τον διακομιστή μεσολάβησης χρησιμοποιώντας Nginx ή Apache για να τοποθετήσετε πρόσθετη ασφάλεια μπροστά του, όπως απλή ταυτότητα HTTP.
  • Αποκτήστε έναν τομέα για τον διακομιστή σας και ρυθμίστε τον ώστε να έχετε πρόσβαση στο μητρώο σας με κάτι όπως: registry.mysite.com
  • Αγοράστε (ή υπογράψτε μόνοι σας) ένα πιστοποιητικό SSL για να προσθέσετε ακόμη περισσότερη προστασία εάν τα κοντέινερ περιέχουν ευαίσθητες πληροφορίες.

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Η Τεχνητή Νοημοσύνη δεν είναι στο μέλλον, είναι εδώ ακριβώς στο παρόν Σε αυτό το blog Διαβάστε πώς οι εφαρμογές Τεχνητής Νοημοσύνης έχουν επηρεάσει διάφορους τομείς.

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Επιθέσεις DDOS: Μια σύντομη επισκόπηση

Είστε επίσης θύμα των επιθέσεων DDOS και έχετε μπερδευτεί σχετικά με τις μεθόδους πρόληψης; Διαβάστε αυτό το άρθρο για να λύσετε τις απορίες σας.

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Έχετε αναρωτηθεί ποτέ πώς κερδίζουν χρήματα οι χάκερ;

Μπορεί να έχετε ακούσει ότι οι χάκερ κερδίζουν πολλά χρήματα, αλλά έχετε αναρωτηθεί ποτέ πώς κερδίζουν τέτοια χρήματα; ας συζητήσουμε.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Επαναστατικές εφευρέσεις από την Google που θα σας φέρουν εύκολη στη ζωή.

Θέλετε να δείτε επαναστατικές εφευρέσεις της Google και πώς αυτές οι εφευρέσεις άλλαξαν τη ζωή κάθε ανθρώπου σήμερα; Στη συνέχεια, διαβάστε στο blog για να δείτε τις εφευρέσεις της Google.

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Friday Essential: Τι συνέβη με τα αυτοκίνητα που κινούνται με AI;

Η ιδέα των αυτοκινούμενων αυτοκινήτων να βγαίνουν στους δρόμους με τη βοήθεια της τεχνητής νοημοσύνης είναι ένα όνειρο που έχουμε εδώ και καιρό. Όμως, παρά τις πολλές υποσχέσεις, δεν φαίνονται πουθενά. Διαβάστε αυτό το blog για να μάθετε περισσότερα…

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Τεχνολογική μοναδικότητα: Ένα μακρινό μέλλον του ανθρώπινου πολιτισμού;

Καθώς η Επιστήμη εξελίσσεται με γρήγορους ρυθμούς, αναλαμβάνοντας πολλές από τις προσπάθειές μας, αυξάνονται και οι κίνδυνοι να υποβάλλουμε τον εαυτό μας σε μια ανεξήγητη Ιδιότητα. Διαβάστε τι σημαίνει η μοναδικότητα για εμάς.

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Εξέλιξη της αποθήκευσης δεδομένων – Infographic

Οι μέθοδοι αποθήκευσης των δεδομένων εξελίσσονται μπορεί να είναι από τη γέννηση των Δεδομένων. Αυτό το ιστολόγιο καλύπτει την εξέλιξη της αποθήκευσης δεδομένων με βάση ένα infographic.

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Λειτουργίες Αρχιτεκτονικών Επιπέδων Αναφοράς Μεγάλων Δεδομένων

Διαβάστε το ιστολόγιο για να μάθετε διαφορετικά επίπεδα στην Αρχιτεκτονική Μεγάλων Δεδομένων και τις λειτουργίες τους με τον απλούστερο τρόπο.

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

6 εκπληκτικά οφέλη από την ύπαρξη έξυπνων οικιακών συσκευών στη ζωή μας

Σε αυτόν τον ψηφιακό κόσμο, οι έξυπνες οικιακές συσκευές έχουν γίνει κρίσιμο μέρος της ζωής. Ακολουθούν μερικά εκπληκτικά οφέλη των έξυπνων οικιακών συσκευών σχετικά με το πώς κάνουν τη ζωή μας να αξίζει και να απλοποιείται.

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Η ενημέρωση του συμπληρώματος macOS Catalina 10.15.4 προκαλεί περισσότερα προβλήματα από την επίλυση

Πρόσφατα, η Apple κυκλοφόρησε το macOS Catalina 10.15.4 μια συμπληρωματική ενημέρωση για την επιδιόρθωση προβλημάτων, αλλά φαίνεται ότι η ενημέρωση προκαλεί περισσότερα προβλήματα που οδηγούν σε bricking των μηχανών mac. Διαβάστε αυτό το άρθρο για να μάθετε περισσότερα