Su CoreOS, imposta il tuo registro Docker

Conosciamo e amiamo tutti Docker, una piattaforma per creare, gestire e distribuire contenitori di applicazioni su più macchine. Docker Inc. fornisce un servizio per ospitare container open source da scaricare (o estrarre) come un repository git noto come "Docker Registry". Pensalo come un GitHub per container Docker.

Ma cosa succede se si desidera ospitare il proprio registro separato da quello pubblico? Bene, Docker Inc. ha aperto la propria applicazione di registro su GitHub.

Questo tutorial ti guiderà attraverso il processo di configurazione di un registro Docker privato utilizzando CoreOS su un nuovo VPS.

CoreOS + Docker

Non passeremo un sacco di tempo a esaminare esattamente ciò che Docker e CoreOS possono fare, poiché non rientra nell'ambito di questo tutorial. In sostanza, CoreOS è progettato per enormi cluster di server, è piccolo, veloce e ottiene automaticamente regolari aggiornamenti di sicurezza. Il suo file system di root è anche di sola lettura, il che significa che è necessario utilizzare Docker per eseguire qualsiasi tipo di software non incluso con l'installazione di base.

Questo rende Core OS un sistema host perfetto per Docker!

Estrazione ed esecuzione del registro più recente

Docker Inc. ha fornito il Registro di sistema come immagine di livello superiore, ciò significa che possiamo eliminarlo con un semplice:

docker pull registry

Questo può richiedere alcuni minuti a seconda della velocità di connessione.

Un vantaggio di essere un'immagine di livello superiore significa anche che riceve supporto e aggiornamenti regolari.

Ora proviamo il registro. Possiamo creare un nuovo contenitore usando l'immagine del registro:

docker run -p 5000:5000 -d --name=basic_registry registry

Per coloro che non hanno usato Docker troppo, la -pbandiera rappresenta PORT, il che significa che stiamo esponendo la porta 5000 dal contenitore alla porta host 5000.

Il -dflag sta per daemon, questo farà funzionare il container in background e non stamperà l'output nella sessione SSH corrente, vogliamo anche nominare questo container di test di base usando l' --nameopzione in modo da poterlo gestire facilmente in un secondo momento.

Assicurarsi che il contenitore del registro di base sia in esecuzione utilizzando docker ps. L'output dovrebbe essere simile a:

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

Inoltre, visita http://YOUR_IP:5000nel tuo browser Web e dovresti ricevere un messaggio come il seguente:

"docker-registry server (dev) (v0.8.1)"

Notare la parola devtra parentesi. Ciò significa che il server sta attualmente eseguendo la configurazione dev. Vedremo presto altre configurazioni.

Ora hai il tuo registro container (molto semplice) in esecuzione! Ma non abbiamo ancora finito.

Forse vuoi mantenere questo privato da occhi indiscreti, o forse archiviare le tue immagini su Amazon S3 invece di archiviazione locale. Esaminiamo le varie opzioni di configurazione nella sezione successiva.

Prima di andare avanti, uccidiamo il contenitore di test in modo che non ci imbattiamo in porte in conflitto.

docker kill basic_registry

Configurazione del registro

Esistono due modi in cui possiamo passare la configurazione al registro Docker. Un modo è passare le variabili di ambiente a un nuovo contenitore e l'altro è aggiungere un file di configurazione.

Ecco alcune delle opzioni di configurazione comuni che utilizzeremo:

  • loglevel- La quantità minima di informazioni per accedere alla console. L'impostazione predefinita è info.
  • standalone- Questo registro dovrebbe agire da solo? (Non interrogare mai il registro pubblico.) L'impostazione predefinita è true.
  • index_endpoint- Se non autonomo, quale altro indice interrogheremo? Predefinito index.docker.io.
  • cachee cache_lru- Opzioni relative all'utilizzo di una cache Redis per file di piccole dimensioni, di cui parleremo più avanti.
  • storage- Quale backend di archiviazione dovremmo usare per questo server? (In questo tutorial useremo local).
  • storage_path - Se si utilizza l'archiviazione locale, quale directory dovremmo usare per conservare i file?

Prima di iniziare a lavorare con la configurazione, abbiamo bisogno di un file di base con cui lavorare. Il file dal repository Docker Registry su GitHub funzionerà perfettamente:

wget https://raw.githubusercontent.com/docker/docker-registry/0.8/config/config_sample.yml

Il file deve essere salvato correttamente con un output come:

2014-09-14 14:09:01 (156 MB/s) - 'config_sample.yml' saved [5384/5384]

Grande! Ora possiamo modificare questo file per adattarlo alle nostre esigenze.

L'unico editor di testo fornito con Core OS è vim, ma non preoccuparti se non l'hai mai usato prima, questo spiegherà passo dopo passo cosa modificare e come farlo.

vim config_sample.yml

Dopo aver aperto il file, premi il Itasto e nell'angolo in basso a destra dovrebbe essere visualizzato: -- INSERT --per la modalità di inserimento. Scorri fino alla fine del file usando i tasti freccia, dovresti vedere una sezione etichettata prod.

Modificheremo le due linee, le modifiche sono di seguito

prod:
    <<: *local
    storage_path: _env:STORAGE_PATH:/data

Ciò che abbiamo fatto è cambiare la prodconfigurazione per derivare dalla localsezione anziché dalla s3sezione. Quindi abbiamo sovrascritto il storage_pathper utilizzare il percorso /dataall'interno del nuovo contenitore.

Dopo aver verificato che tutte le modifiche sono corrette, premi ESCper uscire dalla modalità di inserimento e digitare :wq(questo significa scrivere le modifiche nel file ed uscire da VIM.)

Ora rinominiamo il file in just config.yml

mv config_sample.yml config.yml

Redis caching (opzionale)

Se desideri utilizzare redis per velocizzare il registro dei container, è semplice come estrarre un nuovo container dal registro pubblico e aggiungere qualche altra riga di configurazione.

Per prima cosa, tira l'immagine di livello superiore di Redis:

docker pull redis

Una volta che l'immagine è stata estratta correttamente, possiamo eseguirla e denominarla come abbiamo fatto con il registro dei test:

docker run -d --name registry-redis redis

Poiché redis è in memoria, non è necessario eseguire alcuna configurazione per esso, poiché lo collegheremo al contenitore del registro nei passaggi successivi.

Ancora una volta, assicurati che funzioni utilizzando 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

Ora riaprire config.ymlin vime accedere alla modalità di inserimento proprio come la prima volta che l'abbiamo modificata.

Aggiungi le seguenti righe sotto la prodsezione, assicurandoti di rientrare correttamente. Questa volta stiamo solo aggiungendo cachee 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

Le variabili di ambiente REDIS_PORT_6379_TCP_ADDRe REDIS_PORT_6379_TCP_PORTvengono passate al contenitore del registro al momento del collegamento con il contenitore Redis.

Con ciò, ora hai impostato un contenitore Redis che funzionerà di pari passo con il tuo contenitore di registro. Ora sulla costruzione del registro!

Costruire il container

Abbiamo tutte le configurazioni impostate e pronte, ora abbiamo bisogno di costruire l'attuale contenitore del registro.

Fuoco fino vim Dockerfilea creare una nuova Dockerfile. Accedi alla modalità di inserimento e segui le modifiche seguenti.

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

Quello che abbiamo fatto sopra è essenzialmente estendere l'immagine del registro in modo che utilizzi il nostro file di configurazione e le nostre impostazioni. Un file Docker è un insieme di istruzioni di compilazione che Docker può leggere e compilare. Se vuoi saperne di più sui Dockerfile e sulla loro sintassi, dai un'occhiata alla documentazione ufficiale del sito Docker.

Successivamente è necessario creare il contenitore per l'uso.

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

Ora siamo pronti per correre!

Creiamo una directory sul nostro sistema host da montare nel contenitore come /datavolume.

mkdir registry-data

Ora possiamo creare un nuovo contenitore. Se si prevede di utilizzare la cache Redis, utilizzare il secondo comando di seguito.

# 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

Per assicurarsi che il server funzioni correttamente, visitare http://YOUR_IP:5000. Vedrai il seguente messaggio:

"docker-registry server (prod) (v0.8.1)"

Nota il (prod)significato delle nostre modifiche alla configurazione hanno avuto successo!

Configura il tuo client Docker locale

Ora che abbiamo il nostro registro in esecuzione, vogliamo che il client Docker sui nostri computer locali inizi a usarlo. Di solito useresti il ​​comando:, docker loginma per il nostro uso, dobbiamo aggiungere un altro argomento al comando login:

docker login YOUR_IP:5000

Inserisci un nome utente e una password (pensa a questo come creare un nuovo account) e ignora il messaggio che indica che devi attivarlo.

Quindi, estraiamo un'immagine stock e inseriamola nel nostro repository.

# 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

Se tutto procede correttamente, il messaggio finale dovrebbe essere simile a:

Pushing tag for rev [a9eb17255234] on 

Congratulazioni! Hai configurato il tuo repository docker personale.

Qual è il prossimo?

Ecco alcune idee su come migliorare il tuo nuovo registro privato:

  • Proxy inverso usando Nginx o Apache per mettere ulteriore sicurezza davanti ad esso, come una semplice autenticazione HTTP.
  • Ottieni un dominio per il tuo server e configuralo in modo da poter accedere al tuo registro con qualcosa come: register.mysite.com
  • Acquista (o auto-firma) un certificato SSL per aggiungere ancora più protezione se i tuoi contenitori contengono informazioni riservate.


Leave a Comment

Installa Sentry tramite Docker su Ubuntu 16.04

Installa Sentry tramite Docker su Ubuntu 16.04

Usi un sistema diverso? Introduzione Sentry è una soluzione open source per il monitoraggio degli errori. Sentry tiene traccia delle eccezioni e di altri messaggi utili

Installa Rancher Server su RancherOS

Installa Rancher Server su RancherOS

Panoramica RancherOS è un sistema operativo incredibilmente leggero (solo circa 60 MB) che esegue un demone Docker di sistema come PID 0 per lesecuzione dei servizi di sistema

Come installare Harbor su CentOS 7

Come installare Harbor su CentOS 7

Harbour è un server di registro open source di classe enterprise che archivia e distribuisce immagini Docker. Harbour estende la distribuzione Docker open source b

Crea uno sciame Docker su Alpine Linux 3.9.0

Crea uno sciame Docker su Alpine Linux 3.9.0

Introduzione Questa guida ti mostrerà come creare e configurare uno sciame Docker utilizzando più server Alpine Linux 3.9.0 e Portainer. Si prega di essere consapevoli di ciò

Installazione di Docker su Ubuntu 14.04

Installazione di Docker su Ubuntu 14.04

Usando un sistema diverso? Docker è unapplicazione che consente di distribuire programmi eseguiti come contenitori. È stato scritto nel popolare programma Go

Distribuire unapplicazione Node.js mediante Docker

Distribuire unapplicazione Node.js mediante Docker

Questo articolo mostra come distribuire lapplicazione Node in un contenitore Docker. Nota: in questa esercitazione si presuppone che Docker sia installato e letto

Installa Rancher su Ubuntu 16.04

Installa Rancher su Ubuntu 16.04

Usi un sistema diverso? Introduzione Rancher è una piattaforma open source per lesecuzione di container e la creazione di un servizio di container privato. Rancher è base

Distribuisci Kubernetes con Kubeadm su CentOS 7

Distribuisci Kubernetes con Kubeadm su CentOS 7

Panoramica Questo articolo ha lo scopo di aiutarti a far funzionare un cluster Kubernetes con kubeadm in pochissimo tempo. Questa guida distribuirà due server, su

Installazione docker-compose su CoreOS

Installazione docker-compose su CoreOS

Questo articolo spiega come installare docker-compose su CoreOS. In CoreOS, la cartella / usr / è immutabile, quindi il percorso standard / usr / local / bin non è disponibile per

Distribuisci e gestisci in modo sicuro i contenitori LXC su Ubuntu 14.04

Distribuisci e gestisci in modo sicuro i contenitori LXC su Ubuntu 14.04

I contenitori LXC (contenitori Linux) sono una funzionalità del sistema operativo in Linux che può essere utilizzata per eseguire più sistemi Linux isolati su un singolo host. thes

Installa Docker CE su Ubuntu 18.04

Installa Docker CE su Ubuntu 18.04

Introduzione Docker è unapplicazione che ci consente di distribuire programmi eseguiti come contenitori. È stato scritto nel popolare linguaggio di programmazione Go

Introduzione a Kubernetes su CentOS 7

Introduzione a Kubernetes su CentOS 7

Kubernetes è una piattaforma open source sviluppata da Google per la gestione di applicazioni containerizzate in un cluster di server. Si basa su un decennio e

Sessione adesiva con Docker Swarm (CE) su Debian 9

Sessione adesiva con Docker Swarm (CE) su Debian 9

Usi un sistema diverso? Introduzione Docker Swarm trasforma i singoli server in un cluster di computer; facilitazione del ridimensionamento, alta disponibilità an

Come utilizzare Docker: creazione del primo contenitore Docker

Come utilizzare Docker: creazione del primo contenitore Docker

Questo tutorial spiega le basi per iniziare con Docker. Presumo che tu abbia già installato Docker. I passaggi di questo tutorial funzioneranno su un

Bilanciamento del carico con Docker

Bilanciamento del carico con Docker

Quando si esegue unapplicazione Web, in genere si desidera ottenere il massimo dalle proprie risorse senza dover convertire il software per utilizzare il multithreading o

Installazione di Docker CE su CentOS 7

Installazione di Docker CE su CentOS 7

La tecnologia del contenitore Docker consente di eseguire applicazioni in un ambiente specifico e isolato. Docker Community Edition (CE) è il nuovo nome per il fre

Inizia con SQL Server 2017 (MS-SQL) su CentOS 7 con Docker

Inizia con SQL Server 2017 (MS-SQL) su CentOS 7 con Docker

Prerequisiti Docker engine 1.8+. Minimo 4 GB di spazio su disco. Minimo 4 GB di RAM. Passaggio 1. Installa Docker Per installare SQL-Server, Docker mus

Installazione di Docker CE su Debian 9

Installazione di Docker CE su Debian 9

Usi un sistema diverso? Introduzione Docker è unapplicazione che consente la distribuzione di software allinterno di contenitori virtuali. È stato scritto nel G

Installa Rancher su CentOS 7

Installa Rancher su CentOS 7

Usi un sistema diverso? Introduzione Rancher è una piattaforma open source per lesecuzione di container e la creazione di un servizio di container privato. Rancher è base

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Lintelligenza artificiale può combattere con un numero crescente di attacchi ransomware?

Gli attacchi ransomware sono in aumento, ma l'intelligenza artificiale può aiutare ad affrontare l'ultimo virus informatico? L'intelligenza artificiale è la risposta? Leggi qui sai è AI boone o bane

ReactOS: è questo il futuro di Windows?

ReactOS: è questo il futuro di Windows?

ReactOS, un sistema operativo open source e gratuito è qui con l'ultima versione. Può essere sufficiente alle esigenze degli utenti Windows moderni e abbattere Microsoft? Scopriamo di più su questo vecchio stile, ma un'esperienza del sistema operativo più recente.

Rimani connesso tramite lapp desktop WhatsApp 24*7

Rimani connesso tramite lapp desktop WhatsApp 24*7

Whatsapp ha finalmente lanciato l'app desktop per utenti Mac e Windows. Ora puoi accedere facilmente a Whatsapp da Windows o Mac. Disponibile per Windows 8+ e Mac OS 10.9+

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

In che modo lintelligenza artificiale può portare lautomazione dei processi al livello successivo?

Leggi questo per sapere come l'intelligenza artificiale sta diventando popolare tra le aziende di piccole dimensioni e come sta aumentando le probabilità di farle crescere e dare un vantaggio ai loro concorrenti.

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Laggiornamento del supplemento macOS Catalina 10.15.4 sta causando più problemi che risolverli

Recentemente Apple ha rilasciato macOS Catalina 10.15.4 un aggiornamento supplementare per risolvere i problemi, ma sembra che l'aggiornamento stia causando più problemi che portano al bricking delle macchine mac. Leggi questo articolo per saperne di più

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per lestrazione dei dati dai Big Data

13 strumenti commerciali per l'estrazione dei dati dai Big Data

Che cosè un file system di journaling e come funziona?

Che cosè un file system di journaling e come funziona?

Il nostro computer memorizza tutti i dati in un modo organizzato noto come file system di journaling. È un metodo efficiente che consente al computer di cercare e visualizzare i file non appena si preme search.https://wethegeek.com/?p=94116&preview=true

Singolarità tecnologica: un lontano futuro della civiltà umana?

Singolarità tecnologica: un lontano futuro della civiltà umana?

Man mano che la scienza si evolve a un ritmo rapido, assumendo gran parte dei nostri sforzi, aumentano anche i rischi di sottoporci a una singolarità inspiegabile. Leggi, cosa potrebbe significare per noi la singolarità.

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Uno sguardo a 26 tecniche di analisi dei Big Data: Parte 1

Limpatto dellintelligenza artificiale nella sanità 2021

Limpatto dellintelligenza artificiale nella sanità 2021

L'intelligenza artificiale nell'assistenza sanitaria ha compiuto grandi passi avanti negli ultimi decenni. Pertanto, il futuro dell'IA in sanità continua a crescere giorno dopo giorno.