Come creare un package con Docker

Quando si parla di package, generalmente ci si riferisce a una parte di software o di librerie raggruppate per essere riutilizzate in scala. Un package infatti può essere ad esempio utilizzato da più applicazioni tramite l’importazione o l’estensione del package stesso.

Docker è un tool che renderà più semplice la tua vita di developer, stiamo parlando di un progetto open source in grado di rendere automatico il deployment di applicazioni all’interno di contenitori software, in pratica una piattaforma che ti consentirà di creare, testare e distribuire applicazioni tramite container.


Docker Package: il concetto di “immagine”

Il concetto di package si può tradurre in Docker con le immagini, o Docker image.
Una Docker image contiene di solito un set di istruzioni per la creazione dei container. I container sono istanze di software in esecuzione.
Dalla stessa immagine dovete sapere che è possibile creare più container.

Ad esempio, se volessi creare più istanze di ngnix per soddisfare diverse HTTP request, posso farlo partendo dalla stessa immagine di nginx.

Seguendo lo stesso esempio, potresti chiederti come puoi – partendo dall’immagine pubblica di ngnix – applicare una configurazione personalizzata per il tuo web server.

E’ molto semplice: devi creare un’immagine personalizzata nella quale, partendo dall’immagine base di nginx, si applicano degli step in cui si va ad aggiungere la configurazione personalizzata di nginx.

Per fare questo creiamo un nuovo progetto che chiameremo myapp. All’interno del progetto creiamo un file chiamato Dockerfile, e una cartella config con il file default.conf.

Docker package

Creiamo la nostra configurazione dentro al file config/default.conf. L’esempio contiene una configurazione fittizia, in cui si inoltrano le richieste a un server PHP.

Docker package

Adesso creiamo invece gli step di creazione della nuova immagine all’interno del Dockerfile.

Docker package

Come puoi notare, eseguiamo tre passaggi, di cui l’ultimo è sicuramente opzionale, che ha il solo scopo di mostrare il comando RUN. Iniziando dall’alto, il comando FROM indica da quale immagine si deve partire nella creazione delle nuova immagine. COPY invece ha due argomenti: il file da copiare e la sua destinazione finale all’interno dell’immagine. In questo modo copiamo la nostra configurazione personalizzata nginx nella cartella appropriata all’interno dell’immagine.
Oltre a copiare file, si possono eseguire comandi con il comando RUN. Questo è utile per automatizzare l’installazione di software aggiuntivi o altro.

Esistono molti altri comandi per il Docker file, ne puoi trovare la reference completa cliccando qui: troverai una fonte di assoluto interesse se intendi fare sul serio con Docker.


Lancio Comando Docker Build

Una volta creati i file, da terminale è sufficiente lanciare il comando docker build per creare la nuova immagine personalizzata.

Docker package

Come si vede dall’immagine, i tre step descritti nel Dockerfile vengono eseguiti in sequenza. L’argoment -t del comando docker build permette di dare un nome all’immagine. A questo punto la nostra immagine sarà disponibile per l’utilizzo:

Docker package

Con questa mini guida adesso dovresti essere in grado autonomamente di creare un’immagine con Docker. Consulta la reference che abbiamo menzionato nel precedente paragrafo per maggiori dettagli e inizia a sperimentare!

Come deployare con Docker

Docker è una piattaforma che tramite un sistema di virtualizzazione permette di eseguire programmi in pacchetti chiamati container.

I container sono isolati l’uno dall’altro e includono tutte le risorse software, compreso il sistema operativo, e dunque permettono l’esecuzione dell’applicazione.

Deploy Docker: eseguire il deploy di un’applicazione con Docker usando Docker Image

Per eseguire il deploy di un’applicazione con Docker, è necessario prima di tutto avere a disposizione un’immagine.

L’immagine, o Docker image, è un artefatto di sola lettura che contiene un set di istruzioni per la creazione di un container che può essere eseguito sulla piattaforma Docker. L’immagine fornisce un metodo particolarmente comodo per creare pacchetti di applicazioni e ambienti server preconfigurati.

La Docker image, può essere creata mediante un Dockerfile e con il comando docker build.

Deploy Docker

Possiamo trovare l’immagine appena creata nella lista delle immagini con il comando docker image ls.

Per fare il deploy dell’applicazione sarà necessario avere a disposizione un’istanza di Ubuntu Server con Docker installato. Questa instanza può trovarsi su una virtual machine locale o remota, oppure può trovarsi su una macchina fisica dedicata.

Considera che la macchina virtuale dove verrà eseguito il deploy dovrà avere accesso all’immagine creata. Per fare questo si dovrà copiare l’immagine su un docker registry accessibile via internet. Ci sono molti servizi, tra cui Docker Hub, Amazon ECR o Google Container Registry.

Inoltre, avremo bisogno di creare un account per ottenere la URL del registry e l’abilitazione per poter caricare immagini Docker. A questo punto si potrà caricare l’immagine mediante il comando docker push:

Deploy Docker

Una volta fatto ciò, accedendo alla macchina con Ubuntu Docker, dobbiamo prendere l’immagine dal registry:

Deploy Docker

Appena abbiamo ottenuto l’immagine possiamo lanciare un container con il comando docker run:

Deploy Docker


Deploy Docker: eseguire i comandi all’interno del container

L’attributo -p permette di fare il mapping della porta 80 in modo che sia accessibile dall’esterno. Adesso, lanciando il comando docker ps dovresti vedere il container appena lanciato nella lista.

Per eseguire comandi all’interno del container in esecuzione è possibile eseguire il comando docker exec . Lanciando il comando bash o sh avrai modo di utilizzare la shell all’interno del container, in questo modo:


Scalare più container dinamicamente: i tools di container orchestration

Questo è il metodo più semplice per eseguire il deploy di un container Docker. Che succede se vogliamo eseguire più container e farli interagire tra loro? E se vogliamo scalare il numero di container dinamicamente?

Per fare questo abbiamo bisogno di un tool di container orchestration. Ce ne sono molti, come Docker Swarm, Kubernetes o Amazon ECS, argomenti che tratteremo nei prossimi articoli in maniera approfondita.

Speriamo che questa mini guida possa averti aiutato e soprattutto che ti abbia fatto comprendere come creare un’immagine ed eseguire il deploy di un container.

Docker è oggi un tool imprescindibile per chi si occupa di sviluppo web e di programmazione lato server.

Docker consente infatti di distribuire il codice in maniera più rapida ed è un tool che ci dà una concreta opportunità di rendere omogeneo il funzionamento delle applicazioni ottimizzando il trasferimento del codice.

Come installare Docker: mini guida pratica

Installare Docker sulla propria macchina per creare un ambiente di sviluppo è davvero un’operazione molto semplice. Vediamo come installarlo su Windows, Mac e Ubuntu.

Come installare Docker: Windows, Mac e Ubuntu

In questa mini guida vediamo come installare Docker su Windows, Mac e Ubuntu.


Installare Docker su Windows

Prima di iniziare l’installazione assicurati di avere una versione di Windows tra Pro, Enterprise o Education.

Se hai Windows Home, dovrai installare WSL 2, un subsystem per Windows che permette di creare un ambiente Linux dove Docker può essere eseguito.

Guida all’installazione di WSL 2: https://docs.microsoft.com/en-us/windows/wsl/install-win10

A questo punto dovremo scaricare l’installer. E’ possibile scaricare l’installer di Docker per Windows dal Docker Hub:

Fai doppio click sull’eseguibile .exe e segui questi passaggi:

  • Quando richiesto, assicurati che l’opzione per abilitare Hyper-V sia selezionata.
  • Segui le istruzioni dell’installer e autorizzalo a procedere.
  • Completa il processo e chiudi l’installer.

Per lanciare Docker, cerca “Docker” e scegli “Docker Desktop” tra i risultati.

How to install Docker


Installare Docker su Mac

Come per Windows, per installare Docker su Mac è necessario scaricare l’installer dal Docker Hub.

Come requisito minimo, il computer non deve essere un modello precedente al 2011 ed è necessario avere una versione di macOS uguale o successiva alla 10.14.

Nota che se invece il tuo modello è molto recente e monta un processore M1 di nuova generazione, nessuna versione stabile di Docker è disponibile alla data in cui questo articolo è stato scritto. E’ possibile scaricare una versione ancora in fase di sviluppo chiamata Apple M1 Tech Preview. Leggi bene la sezione “Known issues” dove vengono elencate le limitazioni e i problemi conosciuti.

Una volta scaricato l’installer con estensione .dmg, fai doppio click. Si aprirà una finestrella con l’icona di Docker e la cartella delle applicazioni. Trascina Docker.app dentro la cartella delle applicazioni.

How to install Docker

Ora cerca Docker dallo spotlight (cmd + spazio) e avvia Docker.

Sulla barra di stato in alto a destra dovresti poter notare l’icona di Docker.

How to install Docker

Il processo di avvio sarà terminato quando l’icona rimarrà ferma.


Installare Docker su Ubuntu

Per installare Docker su Ubuntu è necessario seguire alcuni passi da riga di comando.

  1. Installa alcuni package necessari per usare un repository su HTTPS:

    $ sudo apt-get update
    $ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

  2. Aggiungi la chiave GPG ufficiale di Docker:

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

  3. Aggiungi la repository:

    $ sudo add-apt-repository \
    “deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable”

    Nota che puoi impostare un valore diverso di “arch” se il tuo processore ha un’architettura diversa da x86: armhf o arm64.

  4. Installa Docker Engine:

    $ sudo apt-get update
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io

  5. L’installazione di Docker è ora completata.

Cos’è Docker e come funziona questo preziosissimo tool

Docker è una piattaforma che ha rivoluzionato il modo in cui creiamo, testiamo e distribuiamo le nostre applicazioni. Perché? Perché grazie a Docker – il software open source per la containerizzazione in ambiente Linux– è possibile distribuire e ricalibrare le risorse per le nostre applicazioni in qualsiasi ambiente.

In questo articolo che abbiamo scritto per voi vediamo insieme le principali caratteristiche di Docker, quando usarlo, come funziona Docker e qual è la differenza tra Docker e una macchina virtuale.

Seguiteci!

Vediamo Docker dettagliatamente

Il suo linguaggio di programmazione è molto semplice e intuitivo, caratteristica che ci permette di tenere le risorse sempre sotto controllo.
La caratteristica principale di Docker è che consente di distribuire il codice in maniera più rapida, di rendere omogeneo il funzionamento delle applicazioni e di ottimizzare il trasferimento del codice. Tutto questo, come capirete, ci fa risparmiare una grande quantità di tempo, di energie e di denaro.
Ma non finisce qui, grazie a Docker, infatti:

  • si distribuiscono software con una frequenza di sette volte maggiore rispetto a chi non lo utilizza;
  • l’uso dei container semplifica la distribuzione e l’identificazione dei problemi e il rollback per il ripristino;
  • anche il trasferimento delle applicazioni da computer di sviluppo locali a distribuzioni di produzione in AWS è facilitato.

Come funziona Docker?

In questo paragrafo vediamo un po’ più nel dettaglio, ma senza perderci troppo in tecnicismi, come funziona Docker.

Come abbiamo visto nei paragrafi precedenti Docker è la piattaforma software open source che fornisce una modalità standard per creare, eseguire e deployare applicazioni mediante l’uso di container.
Il container è un ambiente isolato dove l’applicazione viene eseguita su un proprio sistema operativo, condividendo con l’host risorse hardware (CPU e RAM) allocate dinamicamente.
Questa funzionalità è coadiuvata e semplificata da servizi come Docker Compose o Kubernetes che facilitano l’esecuzione e la gestione dei container.

L’altra caratteristica, che non possiamo che definire più che positiva, è che i container Docker semplificano l’esecuzione del codice lato server, migliorandone i livelli di utilizzo.

Qual è la differenza tra Docker e una macchina virtuale?

Le macchine virtuali e i container differiscono in diversi modi, ma la differenza principale è che i container forniscono un modo per virtualizzare un sistema operativo in modo che più carichi di lavoro possano essere eseguiti su una singola istanza del sistema operativo.
Con le VM, l’hardware viene virtualizzato per eseguire più istanze del sistema operativo. La velocità, l’agilità e la portabilità dei container li rendono un ulteriore strumento per semplificare lo sviluppo del software.