Docker è la piattaforma di containerizzazione più popolare, ma non esiste isolatamente. Intorno al passaggio ai container è nato un intero ecosistema di strumenti complementari e progetti derivati.
Ecco una carrellata di 10 analizzatori, indicizzatori e orchestratori open source che rendono Docker ancora più comodo e utile. Che tu sia ancora all'inizio del tuo viaggio Docker o un professionista esperto che utilizza la tecnologia in produzione, potresti trovare qualcosa che vale la pena includere nel tuo prossimo progetto.
sommario
- quadrante mobile
- vettore
- governatori
- traffico
- curiosità
- syft
- Vestirsi
- gregge
- Dokku
- Hadolint
- Riepilogo
quadrante mobile
Docker Compose è l'unico strumento in questo elenco che fa effettivamente parte di Docker. Compose è un modo conveniente per creare "stack" di container Docker che puoi gestire all'unisono.
La Docker CLI standard consente di interagire con i singoli container. Compose fornisce un'interfaccia simile per lavorare con i contenitori in forma aggregata. Ciò consente di controllare facilmente i sistemi che richiedono più contenitori, come un server delle applicazioni, un database e un livello di memorizzazione nella cache. Definisci questi componenti come servizi in un file docker-compose.yml
, quindi usa il binario docker-compose
per avviarli tutti insieme:
versione: 3 servizi: app: immagine: example.com/example-app:latest ports: - 80:80 database: immagine: mysql:latest expo: - 3306 cache: immagine: redis:latest expo: - 6379
L'esecuzione docker-compose up -d
creerebbe tre contenitori, uno per l'applicazione, il database e i servizi di cache. Si collegheranno automaticamente tra loro. Questo è molto più gestibile rispetto alla ripetizione del comando di docker run
più volte.
vettore
Portainer è una GUI per installare Docker. È uno strumento basato su browser che offre un'interfaccia completa per la visualizzazione, la creazione e la configurazione di contenitori. Puoi anche interagire con altri tipi di oggetti Docker, come immagini, reti e volumi.
Portainer viene distribuito come propria immagine Docker:
docker run -d -p 9000:9000 --name=portainer -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Questo configura un'istanza Portainer a cui è possibile accedere da localhost:9000
. Funziona montando il connettore Docker del tuo host sul contenitore Portainer. Portainer può utilizzare il socket per gestire i container in esecuzione sul tuo host.
governatori
Kubernetes è una piattaforma di orchestrazione di container distribuita. È un modo comune per spostare i carichi di lavoro Dockerizzati negli ambienti di produzione. Un cluster Kubernetes è costituito da più nodi (macchine fisiche), ognuno dei quali è adatto per ospitare istanze di container.
Kubernetes ti offre scalabilità e implementazione facili. Mentre Simple Docker espone i singoli container su una singola macchina, Kubernetes gestisce più container in esecuzione senza interruzioni su più nodi.
Poiché Kubernetes supporta OCI, puoi distribuire le tue immagini Docker esistenti nel tuo cluster:
apiVersion: apps/v1 tipo: specifiche di distribuzione: repliche: 3 selettore: matchLabels: app: modello di esempio: metadati: etichette: app: specifica di esempio: contenitori: - nome: immagine di esempio: esempio.com/immagine-esempio:porte recenti: -Portacontainer: 80
kubectl apply -f deployment.yml
Questo esempio crea una distribuzione Kubernetes dell'immagine example.com/example-image:latest
. Le replicas: 3
significa che ti ritroverai con tre istanze di container, che forniranno ridondanza per il tuo sistema. La distribuzione è simile all'esecuzione di docker run -d -p 80:80 example.com/example-image:latest
, anche se questo avvia un solo contenitore.
traffico
Traefik è un proxy inverso HTTP facile da integrare con i carichi di lavoro dei container. Si riconfigura automaticamente con nuovi percorsi durante la creazione e la rimozione di contenitori.
Traefik ti consente di allegare tag ai tuoi container per definire i nomi di dominio e il comportamento di inoltro. Il software creerà percorsi proxy appropriati ogni volta che un container con tag corrispondenti si unisce alla rete Traefik.
traffico
Traefik offre anche funzionalità di bilanciamento del carico, supporto WebSocket, un'API REST, metriche integrate e un dashboard basato sul Web in modo da poter monitorare il traffico in tempo reale. Questo è un buon modo per esporre più contenitori pubblici tra nomi di dominio utilizzando un'unica installazione Docker.
curiosità
Trivy è uno scanner di immagini per container che rileva le vulnerabilità note. La scansione delle immagini prima di distribuirle alla produzione ti dà la certezza che i tuoi carichi di lavoro sono al sicuro.
Trivy è disponibile come propria immagine Docker. Puoi avviare una semplice scansione example-image:latest
usando il seguente comando:
docker run --rm -v trivy-cache:/root/.cache/ -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy:latest image esempio-immagine:latest
Trivy identifica i pacchetti software nell'immagine, esegue la scansione delle vulnerabilità e genera un report contenente l'ID CVE, la gravità e l'intervallo di versioni interessate per ciascun problema. Devi aggiornare ogni pacchetto alla FIXED VERSION
indicata da Trivy. Pertanto, eseguire lo strumento dopo aver creato un'immagine è un modo semplice per aumentare la sicurezza delle distribuzioni.
syft
Syft genera SBOM (distinta materiali software) dalle immagini Docker. Questi sono gli elenchi di tutti i pacchetti del sistema operativo e le dipendenze del linguaggio di programmazione inclusi nell'immagine.
Syft ti aiuta a prendere il controllo della tua catena di fornitura del software. Docker semplifica il riferimento a contenuti remoti e la sovrapposizione di file system complessi senza necessariamente accorgersene. È ancora più difficile per gli utenti della tua immagine capire cosa c'è dentro.
I recenti attacchi di alto profilo hanno dimostrato che le lunghe catene di fornitura di software rappresentano una seria minaccia. L'esecuzione di Syft sulle tue immagini ti tiene informato sulla loro composizione, permettendoti di valutare se puoi rimuovere alcuni pacchetti o passare a un'immagine di base più minimale.
Vestirsi
Su un argomento correlato, Dive semplifica l'ispezione del file system dell'immagine Docker. Le immagini sono piuttosto opache per impostazione predefinita, quindi è comune avviare un contenitore per scoprire cosa c'è dentro. Ciò potrebbe metterti a rischio se l'immagine contiene un processo dannoso.
Dive ti consente di navigare attraverso il file system di un'immagine utilizzando una vista ad albero interattiva nel tuo terminale. Puoi anche esplorare i singoli livelli per vedere come è stata costruita l'immagine. Vedere solo le modifiche in un singolo livello ti aiuta a vedere le modifiche applicate da ogni fase di costruzione, anche se non hai accesso al Dockerfile originale.
gregge
Flocker è un gestore di volumi che combina la gestione dei contenitori e dei loro dati persistenti. Supporta ambienti multi-host, semplificando la migrazione dei volumi tra host quando i container vengono riprogrammati.
Questa portabilità garantisce che i volumi siano disponibili ovunque si trovino i contenitori. I volumi Docker tradizionali non possono lasciare l'host su cui sono stati creati, costringendo anche i contenitori a rimanere in stasi.
Il supporto dello storage distribuito semplifica il passaggio dai container alla produzione. Flocker è l'ideale per contenitori con stato che devono essere ridimensionati in ambienti distribuiti mantenendo il supporto per più motori di archiviazione. Supporta backend inclusi Amazon EBS, Google GCE e OpenStack Block Storage.
Dokku
Dokku utilizza Docker per consentirti di ospitare autonomamente la tua piattaforma come servizio (PaaS). Avvia automaticamente i contenitori Docker quando esegui il commit del codice tramite Git.
In quanto piattaforma applicativa completa, Dokku ti consente di mappare domini, aggiungere SSL, distribuire più ambienti tramite rami Git e configurare servizi di supporto come i database. È un'ottima alternativa alle piattaforme commerciali come Heroku e Firebase che ti consente di mantenere le distribuzioni di produzione sul tuo hardware.
La configurazione di un server Dokku consente di avviare applicazioni in contenitori isolati senza apprendere tutte le complessità della gestione manuale dei contenitori. Puoi concentrarti sulla scrittura e sul commit del codice utilizzando flussi di lavoro basati su Git consolidati. L'aggiunta del tuo server Dokku come telecomando Git significa che puoi git push
per distribuire le modifiche, sia localmente nel terminale che come parte di una pipeline CI.
Hadolint
Hadolint è un linter Dockerfile che verifica che i passaggi di compilazione aderiscano alle migliori pratiche. L'esecuzione di Hadolint può svelare problemi di configurazione comuni che rendono le tue build più lente e meno sicure. Hadolint utilizza ShellCheck internamente per lint anche gli script della shell nelle sue istruzioni Dockerfile RUN
.
Puoi scaricare Hadolint come binario precompilato, testarlo sul Web o utilizzare la tua immagine Docker. hadolint/hadolint
. Avvia una scansione fornendo un percorso Dockerfile al binario Hadolint:
file Docker di hadolint
Hadolint eseguirà la scansione del tuo Dockerfile alla ricerca di problemi e presenterà i risultati al tuo terminale. Alcune delle regole incluse includono il controllo completo dei percorsi WORKDIR
, l'invio solo COPY --from
alias e il passaggio a un utente non root prima della fine del Dockerfile. L'esecuzione regolare di Hadolint si tradurrà in build di immagini più performanti e più sicure che soddisfano gli standard della comunità.
Riepilogo
Docker è un ottimo strumento di sviluppo, ma migliora ancora se combinato con altri progetti popolari. Le iniziative della community possono aumentare la sicurezza delle tue immagini, aiutarti a identificare i problemi nei tuoi Dockerfile e fornire GUI versatili per la gestione dei tuoi container.
Nuovi strumenti emergono costantemente, quindi vale la pena esplorare siti di condivisione del codice come GitHub per i progetti imminenti. L'argomento Docker è un buon punto di partenza per la tua esplorazione.
- App di streaming Android Riskware trovate nel Galaxy Store di Samsung
- Che cos'è i3 Tiling Window Manager e come viene utilizzato in Linux?
scopri più contenuti
Cos'è un amplificatore integrato?
Anche Google Pixel Watch ha il rilevamento delle cadute, ma non prima del prossimo anno
Le migliori tazzine da caffè riscaldate del 2022
Come automatizzare il tuo iPhone in base all'ora, all'attività o alla posizione
"Deve essere stato prima del mio tempo"
Perché la NASA ha inviato Snoopy sulla Luna? – Recensione geek
Come eseguo un Dockerfile in Portainer?
Se disponi di un Dockerfile esistente, puoi caricarlo su Portainer e utilizzarlo per creare l'immagine. Dal menu seleziona Immagini, quindi fai clic su Crea una nuova immagine. Quindi, assegna all'immagine un nome descrittivo (puoi inserire più nomi), seleziona l'opzione Carica in Metodo di creazione, quindi cerca e carica il Dockerfile.
Portainer ha bisogno di Docker?
Per aggiungere un nuovo ambiente Linux a un'installazione di Portainer Server esistente, fare riferimento alle istruzioni di installazione di Portainer Agent. Per iniziare, avrai bisogno di: L'ultima versione di Docker installata e funzionante .
Cos'è Portainer Docker?
Portainer è uno strumento di gestione dei container universale che può funzionare sia con Docker che con Kubernetes per rendere la distribuzione e la gestione di applicazioni e servizi containerizzati più semplici ed efficienti. Portainer gode di oltre 650.000 utenti e 21.700 stelle GitHub, quindi è ampiamente utilizzato e popolare.
Come aggiungo un container Docker a Portainer?
Aggiungi un nuovo contenitore – Documentazione Portainer. Dal menu selezionare Istanze contenitore quindi fare clic su Aggiungi contenitore . Seleziona l'abbonamento che desideri utilizzare per il contenitore. Se esistono due o più gruppi di risorse, seleziona dove vuoi distribuire il contenitore.