News Ticker

Rilasciato Docker 1.13

E' stato rilasciato ieri Docker 1.13 contenente, oltre ai soliti bugfix e miglioramenti di sicurezza, una serie di features decisamente interessanti.

Andiamo insieme ad esplorare le più significative:

docker stack deploy
Una delle feature interessanti di Docker è la compose, ovvero quella di poter definire una applicazione come una serie di container differenti, ognuno con le proprie caratteristiche, semplicemente scrivendo un file YAML. Lanciando poi il semplice comando "docker-compose up" verranno lanciati e configurati i singoli container così come li abbiamo specificati.
Con l'introduzione del formato 3 del file yaml per docker compose, è possibile estendere l'uso del compose sui cluster Docker Swarm, avendo un singolo file che definisce non solo la nostra applicazione multi-container su un sistema multi-host, ma anche definendo le politiche di update. Quindi, una volta scritto il nostro file di compose, basterà lanciare

# docker stack deploy --compose-file=teo_app.yml teo_app

per vederla distribuita sul nostro cluster!

Pulizia e manutenzione del sistema
Spesso, soprattutto in ambienti di test, fare prove con docker porta ad avere una situazione "sporca" sulla macchina: container usati ed abbandonati, volumi istanziati e mai più riutilizzati, oppure semplicemente tante immagini tirate giù dall'hub giusto per trovare quella che più faceva comodo a noi.
Due comandi sono stati aggiunti per analizzare la situazione; il primo ci permette di avere un report dello stato attuale:

# docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              9                   2                   1.249 GB            696.9 MB (55%)
Containers          2                   0                   0 B                 0 B
Local Volumes       0                   0                   0 B                 0 B

Questo comando funziona come il df del sistema, e ci fornisce un report sulle immagini, i container e i volumi, indicando per ognuno di questi elementi quanti ne abbiamo, quanti ne stiamo usando, la loro dimensione e, soprattutto, quanto possiamo recuperare con una pulizia.
Pulizia che possiamo effettuare con un'altro comando introdotto da questa versione, ovvero il comando prune

# docker system prune
WARNING! This will remove:
	- all stopped containers
	- all volumes not used by at least one container
	- all networks not used by at least one container
	- all dangling images
Are you sure you want to continue? [y/N]

Comodo per ripulire il nostro portatile di tanto in tanto.

Aggiornamento della CLI
Oltre ad aggiungere un miglior supporto alla retrocompatibilità della CLI di docker, è stata definita una nuova struttura della stessa, che permette di avere dei comandi più comodi "mnemonicamente parlando".
Il che vuol dire che se prima avevamo i seguenti comandi per avere la lista dei container o la lista delle immagini:

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
 
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f753707788c5        3 months ago        127 MB
jenkins             latest              96931e4c66bd        3 months ago        712 MB
tomcat              7.0.72-jre8         871f8c6211e4        3 months ago        333 MB

Adesso possiamo ottenere lo stesso risultato tramite:

# docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
 
# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f753707788c5        3 months ago        127 MB
jenkins             latest              96931e4c66bd        3 months ago        712 MB
tomcat              7.0.72-jre8         871f8c6211e4        3 months ago        333 MB

Lettura log distribuiti
Anche qui, passi avanti sono stati fatti per facilitare e velocizzare l'uso di container su cluster Swarm distribuiti. Se prima una volta creato un servizio swarm dovevamo identificare i singoli host su cui i container erano in esecuzione, collegarci ad essi, ed utilizzare il comando

# docker logs [container_id]

per avere i log (è disponibile anche l'opzione -f per il following), adesso possiamo direttamente da uno dei manager del cluster lanciare:

# docker service logs [service_id]

Per ottenere in sequenza tutti i log dei container facente parte di quel servizio. Solo una nota, questa feature è attualmente in stato experimental; sarà quindi necessario lanciare il demone docker con l'opzione "--experimental=true" per averla a disposizione.

Tante altre novità sono presenti in questa release, non vi possiamo che consigliare la lettura del nostro articolo introduttivo su docker, dell'annuncio ufficiale del rilascio, e la visione di questo breve video che espone le varie novità più sensibili.