logo

Cos'è Docker?

Docker è un insieme di prodotti Platform as a Service (PaaS) che utilizzano la virtualizzazione a livello di sistema operativo per fornire software in pacchetti chiamati contenitori. I contenitori sono isolati l'uno dall'altro e raggruppano il proprio software, librerie e file di configurazione; possono comunicare tra loro attraverso canali ben definiti. Tutti i contenitori sono gestiti da un unico kernel del sistema operativo e quindi utilizzano meno risorse di una macchina virtuale.

Tabella dei contenuti



Cos'è Docker?

Docker è un open source containerizzazione piattaforma mediante la quale puoi comprimere la tua applicazione e tutte le sue dipendenze in un'unità standardizzata chiamata contenitore. I contenitori sono leggeri, il che li rende portatili e sono isolati dall'infrastruttura sottostante e da ogni altro contenitore. Puoi eseguire il file immagine della finestra mobile come un contenitore docker in qualsiasi macchina su cui è installato docker senza dipendere da sistema operativo.

Docker ha guadagnato la sua popolarità grazie al suo impatto sullo sviluppo e sulla distribuzione del software. Di seguito sono riportati alcuni dei motivi principali per cui la finestra mobile è diventata popolare:

  1. Portabilità: Docker facilita gli sviluppatori nel confezionare le loro applicazioni con tutte le dipendenze in un unico contenitore leggero. È in grado di garantire prestazioni costanti nei diversi ambienti informatici.
  2. Riproducibilità: Incapsulando le applicazioni con le relative dipendenze all'interno di un contenitore, si garantisce che le configurazioni del software rimangano coerenti negli ambienti di sviluppo, test e produzione.
  3. Efficienza: Docker attraverso la sua architettura basata su container ottimizza l'utilizzo delle risorse. Consente agli sviluppatori di eseguire più applicazioni isolate su un singolo sistema host.
  4. Scalabilità: Le funzionalità di scalabilità di Docker hanno aiutato gli sviluppatori a semplificare la gestione delle loro applicazioni al momento dell'incremento dei carichi di lavoro.

Cos'è un Dockerfile?

IL Dockerfile utilizza DSL (Domain Specific Language) e contiene istruzioni per generare un'immagine Docker. Dockerfile definirà i processi per produrre rapidamente un'immagine. Durante la creazione della tua applicazione, dovresti creare un Dockerfile in ordine dal momento che Demone Docker esegue tutte le istruzioni dall'alto verso il basso.



(Il demone Docker, spesso indicato semplicemente come Docker, è un servizio in background che gestisce i contenitori Docker su un sistema.)

  • È un documento di testo che contiene i comandi necessari che, durante l'esecuzione, aiutano ad assemblare un'immagine Docker.
  • L'immagine Docker viene creata utilizzando un Dockerfile.
Dockerfile

Per saperne di più sul Dockerfile fare riferimento al file Docker – Concetto di Dockerfile .

Cos'è l'architettura Docker e come funziona Docker?

Docker utilizza un'architettura client-server. Il client Docker comunica con il demone docker che aiuta a creare, eseguire e distribuire i contenitori docker. Il client Docker viene eseguito con il demone sullo stesso sistema oppure possiamo connettere il client Docker con il demone Docker in remoto. Con l'aiuto dell'API REST su un socket UNIX o una rete, il client docker e il daemon interagiscono tra loro. Per saperne di più sul funzionamento della finestra mobile fare riferimento al file Architettura di Docker .



Architettura Docker

Cos'è l'immagine Docker?

È un file, composto da più livelli, utilizzato per eseguire codice in un contenitore Docker. Sono un insieme di istruzioni utilizzate per creare contenitori docker. Docker Image è un pacchetto software eseguibile che include tutto il necessario per eseguire un'applicazione. Questa immagine indica come dovrebbe essere creata un'istanza di un contenitore, determinando quali componenti software verranno eseguiti e come. Docker Container è un ambiente virtuale che raggruppa il codice dell'applicazione con tutte le dipendenze necessarie per eseguire l'applicazione. L'applicazione viene eseguita in modo rapido e affidabile da un ambiente informatico all'altro.

Cos'è il contenitore Docker?

Il contenitore Docker è un'istanza di runtime di un'immagine. Consente agli sviluppatori di creare pacchetti di applicazioni con tutte le parti necessarie come librerie e altre dipendenze. I contenitori Docker sono istanze runtime di immagini Docker. I contenitori contengono l'intero kit necessario per un'applicazione, quindi l'applicazione può essere eseguita in modo isolato. Ad esempio: Supponiamo che ci sia un'immagine del sistema operativo Ubuntu con NGINX SERVER quando questa immagine viene eseguita con il comando docker run, quindi verrà creato un contenitore e NGINX SERVER verrà eseguito sul sistema operativo Ubuntu.

Cos'è DockerHub?

Docker Hub è un servizio di repository ed è un servizio basato su cloud in cui le persone inviano le proprie immagini del contenitore Docker ed estraggono anche le immagini del contenitore Docker dal Docker Hub sempre e ovunque tramite Internet. In genere semplifica la ricerca e il riutilizzo delle immagini. Fornisce funzionalità come la possibilità di inviare le immagini come registro privato o pubblico in cui è possibile archiviare e condividere immagini Docker.

Principalmente il team DevOps utilizza Docker Hub. È uno strumento open source e disponibile gratuitamente per tutti i sistemi operativi. È come un archivio in cui archiviamo le immagini e le estraiamo quando necessario. Quando una persona desidera inviare/estrarre immagini dal Docker Hub, deve avere una conoscenza di base di Docker. Parliamo dei requisiti dello strumento Docker.

Cos'è Docker Compose?

Docker Compose eseguirà un'applicazione multi-contenitore basata su YAML. Il file YAML è costituito da tutte le configurazioni necessarie per distribuire i contenitori Docker Componi , che è integrato con Sciame di Docker e fornisce indicazioni per la creazione e la distribuzione dei contenitori. Con Docker Compose, ogni contenitore è costruito per essere eseguito su un singolo host.

Come scaricare Docker Desktop?

Docker Desktop fornisce una GUI per lavorare su contenitori docker, immagini docker e reti docker. Il desktop Docker fornisce un ambiente separato che contiene Docker Engine, Docker CLI, Docker Compose, Kubernetes, e altri strumenti necessari per creare, spedire ed eseguire le applicazioni sotto forma di contenitori che lo rendono più facile da usare. Per saperne di più su come installare il desktop docker fare riferimento a Immagine di esempio del desktop Docker.

Comandi della finestra mobile

Attraverso l'introduzione dei comandi essenziali della finestra mobile, la finestra mobile è diventata un potente software per semplificare il processo di gestione dei contenitori. Aiuta a garantire flussi di lavoro di sviluppo e distribuzione senza interruzioni. Di seguito sono riportati alcuni comandi docker utilizzati comunemente:

  • Esegui Docker: Utilizzato per avviare i contenitori dalle immagini, specificando le opzioni e i comandi di runtime.
  • Tiro della finestra mobile: Recupera le immagini del contenitore dal registro dei contenitori come Docker Hub sul computer locale.
  • Docker ps : Aiuta a visualizzare i contenitori in esecuzione insieme alle loro informazioni importanti come l'ID del contenitore, l'immagine utilizzata e lo stato.
  • Fermata Docker : Aiuta a fermare i contenitori in esecuzione chiudendo con garbo i processi al loro interno.
  • Inizio finestra mobile: Aiuta a riavviare i contenitori arrestati, riprendendo le loro operazioni dallo stato precedente.
  • Accesso alla finestra mobile: Aiuta ad accedere al registro della finestra mobile consentendo l'accesso ai repository privati.

Per saperne di più sui comandi docker fare riferimento al file Docker – Comandi di istruzioni .

Motore Docker

Il software che ospita i contenitori si chiama Docker Engine. Docker Engine è un'applicazione basata su client-server. Il motore docker ha 3 componenti principali:

  1. Server: È responsabile della creazione e della gestione di immagini, contenitori, reti e volumi Docker su Docker. Viene definito processo demone.
  2. API REST : Specifica come le applicazioni possono interagire con il Server e gli dice cosa fare.
  3. Cliente: Il client è un'interfaccia a riga di comando (CLI) docker, che ci consente di interagire con Docker utilizzando i comandi docker.

Perché utilizzare Docker?

Docker può essere utilizzato per comprimere l'applicazione e le sue dipendenze, rendendo leggero e facile spedire il codice più velocemente e con maggiore affidabilità. Docker semplifica l'esecuzione dell'applicazione nell'ambiente di produzione. Il contenitore Docker può essere indipendente dalla piattaforma se il motore Docker è installato nella macchina.

  • L'efficienza delle risorse : Docker aiuta a massimizzare l'utilizzo delle risorse eseguendo più contenitori su un singolo host. Aiuta a ridurre i costi delle infrastrutture e migliora l’efficienza.
  • Controllo della versione: Semplifica il controllo delle versioni delle applicazioni e delle loro dipendenze garantendo la coerenza e facilitando la collaborazione tra i team.
  • Agilità dei microservizi: Consente l'adozione dell'architettura dei microservizi, promuovendo lo sviluppo agile di applicazioni scalabilità, flessibilità e isolamento degli errori.

Cos'è Docker per AWS?

Docker è lo strumento più potente per eseguire l'applicazione sotto forma di contenitori. I contenitori Docker sono leggeri e possono essere eseguiti su qualsiasi sistema operativo.

AWS fornisce il servizio Amazon Elastic Container ( AmazonECS ) è un servizio container completamente gestito tramite il quale è possibile distribuire, ridimensionare e gestire i container docker. Amazon ECS è la piattaforma più affidabile in base alle prestazioni e può anche essere integrata con altri servizi AWS come bilanciamento del carico, rilevamento dei servizi e monitoraggio dello stato dei container. Per saperne di più Servizio Amazon Elastic Container (Amazon ECS) .

Differenza tra contenitori Docker e macchine virtuali

Di seguito sono riportate le differenze tra i contenitori docker e le macchine virtuali:

Contenitori Docker

Macchine virtuali

I contenitori Docker contengono file binari, librerie e file di configurazione insieme all'applicazione stessa.

Le macchine virtuali (VM) vengono eseguite su hypervisor, che consentono l'esecuzione di più macchine virtuali su una singola macchina insieme al proprio sistema operativo.

Non contengono un sistema operativo guest per ciascun contenitore e si basano sul kernel del sistema operativo sottostante, il che rende i contenitori leggeri.

Ogni VM ha la propria copia di un sistema operativo insieme all'applicazione e ai file binari necessari, il che la rende notevolmente più grande e richiede più risorse.

I contenitori condividono le risorse con altri contenitori nello stesso sistema operativo host e forniscono l'isolamento del processo a livello di sistema operativo.

Forniscono l'isolamento del processo a livello hardware e sono lenti nell'avvio.

Installa Docker su Ubuntu

I seguenti passaggi ti guidano nell'installazione di Docker su Ubuntu:

Passaggio 1: rimuovere la vecchia versione di Docker

  • Esegui il comando seguente per rimuovere la vecchia versione del software docker:
$ sudo apt-get remove docker docker-engine docker.io containerd runc>

Passaggio 2: installazione del motore Docker

  • Il seguente comando viene utilizzato per l'installazione del motore docker:
$ sudo apt-get update   $ sudo apt-get install   ca-certificates   curl   gnupg   lsb-release $ sudo mkdir -p /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg $ echo   'deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu   $(lsb_release -cs) stable' | sudo tee /etc/apt/sources.list.d/docker.list>/dev/null $ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin $ sudo groupadd docker $ sudo usermod -aG docker $USER>

Passaggio 3: verificare l'installazione di Docker

  • Controlla se la finestra mobile è installata correttamente nel tuo sistema provando a eseguire un contenitore con il seguente comando:
$ sudo docker run hello-world>

Per maggiori dettagli sull'installazione di Docker su Ubuntu, fare riferimento a questo – Articolo

Esempio di esempio: containerizzazione dell'applicazione utilizzando Docker

I seguenti passaggi guidano nella containerizzazione dell'applicazione utilizzando Docker:

Passaggio 1: crea Dokcerfile e l'applicazione Python

  • Crea una cartella con 2 file (Dockerfile e file main.py) al suo interno

Passaggio 2: sviluppare codice Python

  • Modifica main.py con il codice seguente, oppure puoi provare a sviluppare il tuo codice Python.
Pitone
#!/usr/bin/env python3 print('Docker and GFG rock!')>

Passaggio 3: sviluppare un Dockerfile

  • Modifica Dockerfile con le istruzioni seguenti per sviluppare il Dockerfile:
FROM python:latest COPY main.py / CMD [ 'python', './main.py' ]>

Passaggio 4: crea un'immagine Docker

  • Dopo aver creato e modificato il file main.py e il Dockerfile, crea la tua immagine contenente la tua applicazione eseguendo il seguente comando:
$ sudo docker build -t python-test .>
  • L'opzione '-t' consente di definire il nome della tua immagine. ‘python-test’ è il nome che abbiamo scelto per l’immagine.

Passaggio 5: eseguire il contenitore Docker

  • Una volta creata l'immagine, il codice è pronto per essere avviato.
$ sudo docker run python-test>

Per saperne di più sulla containerizzazione della tua applicazione, fai riferimento a questo: Articolo

Esempio di esempio per inviare un'immagine a Docker Hub

I seguenti passaggi guidano nel push di un'immagine su Dockerhub:

Passo 1: Crea un account su Docker Hub o utilizzane uno esistente se ne hai già uno.

Passo 2: Fare clic sul pulsante Crea repository, inserire il nome del file e fare clic su Crea.

Passaggio 3: Ora taggeremo la nostra immagine e la invieremo al repository Docker Hub che abbiamo appena creato.

  • Ora esegui il comando seguente per elencare le immagini docker:
$ docker images>
  • Quanto sopra ci darà questo risultato
REPOSITORY TAG IMAGE_ID CREATED SIZE afrozchakure/python-test latest c7857f97ebbd 2 hours ago 933MB>
  • L'ID immagine viene utilizzato per taggare l'immagine. La sintassi per taggare l'immagine è:
docker tag /python-test:latest $ docker tag c7857f97ebbd afrozchakure/python-test:latest>

Passaggio 4: Invia l'immagine al repository Docker Hub

$ docker push afrozchakure/python-test>

Per saperne di più sulla pubblicazione delle immagini su dockerhub, fare riferimento a questo – Articolo

Recupera ed esegui l'immagine da Docker Hub

1. Per rimuovere tutte le versioni di una particolare immagine dal nostro sistema locale, utilizziamo l'ID immagine per essa.

$ docker rmi -f af939ee31fdc>

2. Ora esegui l'immagine, recupererà l'immagine dall'hub docker se non esiste sul tuo computer locale.

$ docker run afrozchakure/python-test>

Vantaggi di Docker

Di seguito sono riportati alcuni dei vantaggi di Docker:

  • Portabilità: Strutture Docker con creazione di contenitori portatili leggeri che non possono essere installati su qualsiasi macchina indipendentemente dai sistemi operativi sottostanti.
  • Isolamento: Docker tramite contenitori fornisce un elevato livello di isolamento consentendo alle applicazioni di essere eseguite indipendentemente l'una dall'altra risolvendo i problemi per cui un contenitore non influisce sull'altro.
  • Riproducibilità: Con, gli sviluppatori Docker possono facilmente impacchettare le loro applicazioni e le loro dipendenze in immagini riutilizzabili. Consente build coerenti e riproducibili negli ambienti di sviluppo, test e produzione.
  • Integrazione DevOps : Promuove la collaborazione e l'automazione lungo tutto il ciclo di vita dello sviluppo del software nella gestione dei crescenti carichi di lavoro.

Alternative a Docker

Di seguito sono riportate le alternative a Docker:

  • Sottomesso : offre un motore contenitore compatibile con Docker con particolare attenzione alla sicurezza e alla compatibilità, ideale per ambienti in cui Docker non è preferito o non è disponibile.
  • rkt: Un runtime di container leggero sviluppato da CoreOS, progettato per semplicità, sicurezza e componibilità, che offre un'alternativa al runtime di container di Docker.
  • LXC (contenitori Linux): Fornisce la virtualizzazione a livello di sistema operativo per l'esecuzione di più sistemi Linux isolati (contenitori) su un singolo host, offrendo un'alternativa leggera a Docker per determinati casi d'uso.
  • contenitore: Un runtime di container core standard del settore sviluppato da Docker, Inc., che offre una piattaforma minima e stabile per la creazione di applicazioni containerizzate, spesso utilizzata come alternativa di livello inferiore a Docker per sistemi di orchestrazione di container più avanzati come Kubernetes.

Sicurezza Docker

Di seguito sono riportati alcuni approfondimenti sulla sicurezza della finestra mobile:

  • Isolamento : I contenitori Docker forniscono un forte isolamento garantendo le applicazioni e elaborandone l'esecuzione.
  • Infrastruttura immutabile : Promuove l'uso di un'infrastruttura immutabile, in cui i contenitori vengono creati da immagini immutabili controllate dalla versione.
  • Limitazioni nelle risorse: Consente di definire i vincoli delle risorse per i contenitori come limiti di CPU e memoria.
  • Scansione di sicurezza: Fornisce gli strumenti di scansione di sicurezza integrati che consentono di scansionare le immagini del contenitore per individuare vulnerabilità note e malware prima della distribuzione.

Conclusione

Quindi hai imparato le basi di Docker, la differenza tra macchine virtuali e contenitori Docker insieme ad alcune terminologie comuni in Docker. Inoltre, abbiamo installato Docker sui nostri sistemi. Abbiamo creato un'applicazione utilizzando Docker e abbiamo inviato la nostra immagine a Docker Hub. Infine, abbiamo imparato come rimuovere una particolare immagine dal nostro sistema locale e successivamente estrarre l'immagine da Docker Hub se non esiste localmente.

Docker – Domande frequenti

Cos’è in breve Docker Hub?

Docker Hub è un registro pubblico in cui gli utenti/sviluppatori possono archiviare e condividere le immagini di sistema create da loro e consentire loro di accedere facilmente e riutilizzare le immagini per altri sviluppatori di software.

convenzione di denominazione di Java

Cosa è necessario per utilizzare Docker Hub?

Per utilizzare Docker Hub l'utente deve avere un account sulla piattaforma Docker Hub. Se non hai un account su Docker Hub puoi crearne uno iscrivendoti. Una volta che hai un account su Docker, puoi eseguire operazioni come push e pull di immagini da e verso Docker Hub.

Cosa sono i log Docker?

Il demone Docker e i contenitori Docker genereranno i log Docker sotto forma di messaggi di testo che ti aiuteranno ulteriormente a risolvere i problemi, monitorare le prestazioni delle tue applicazioni e raccogliere informazioni sullo stato del tuo ambiente Docker.

Cos'è DockerBuild?

Docker build è un comando utilizzato per creare l'immagine docker utilizzando Dockerfile.

Cos'è Docker Ubuntu?

Docker Ubuntu è il termine utilizzato per utilizzare il servizio Docker con i sistemi operativi basati su Ubuntu. L'esecuzione di Docker è più adatta per la popolare distribuzione Linux Ubuntu.