Analizziamo in questo post due interfacce grafiche per Docker che possono arricchire un ambiente di produzione e renderlo più facile da gestire.
Al crescere del numero di immagini e al crescere di processi Docker in esecuzione, l’output della riga di comando può diventare insufficiente per avere un quadro di insieme. Questo soprattutto perché un Docker hypervisor, chiamiamolo così, ha una densità molto più alta di un hypervisor di VM tradizionale: può contenere migliaia di istanze running. Immaginate di dover lavorare con migliaia di macchine in KVM soltanto da virsh! Un’interfaccia grafica può rendere meno dispendioso, meno faticoso e meno soggetto a errori il lavoro dell’amministratore Docker.
Come abituale nell’opensource, se ci serve una GUI web è possibile scegliere tra varie alternative. Mi sento di segnalare due progetti. Per primo, docker-ui, che fornisce una spartanissima GUI che mostra e consente di lavorare con le istanze in esecuzione, le immagini disponibili sul sistema, e poco più:
Docker-ui viene distribuito già pacchettizzato in Docker, quindi esiste un’immagine Docker pronta da scaricare e da mettere in moto per iniziare a usarlo subito su http://<HOST_DOCKER>:9000:
# docker build -t crosbymichael/dockerui github.com/crosbymichael/dockerui # docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock crosbymichael/dockerui -e /docker.sock
Il secondo progetto interessante è Shipyard, una GUI un po’ più complessa e completa, con il login, la gestione multihost, e tante altre feature. È così sofisticata che consiste di tre container connessi: interfaccia web, DB e Redis. Fortunatamente si installa con un comando unico:
# docker run -i -t -v /var/run/docker.sock:/docker.sock shipyard/deploy setup
Una volta che questo comando termina, è necessario installare lo Shipyard agent, scaricandolo, dandogli i permessi di esecuzione e facendogli passare una chiave di registrazione all’host con l’interfaccia web, che si chiama shipyard/shipyard:latest. Con docker inspect annotiamo l’indirizzo IP di questo container, e creiamo la chiave:
# curl https://github.com/shipyard/shipyard-agent/releases/download/v0.3.2/shipyard-agent -L -o /usr/local/bin/shipyard-agent # chmod +x /usr/local/bin/shipyard-agent # shipyard-agent -url http://172.17.0.12:8000 -register 2014/08/03 14:45:30 Using 192.168.0.12 for the Docker Host IP for Shipyard 2014/08/03 14:45:30 If this is not correct or you want to use a different IP, please update the host in Shipyard 2014/08/03 14:45:30 Registering at http://172.17.0.12:8000 2014/08/03 14:45:30 Agent Key: 20603b80ecbb4c30a0e38ad5824a63e4
Ora facciamo login in Shipyard, andando su http://<HOST_DOCKER>:8000, autenticandoci come admin:shipyard, e in Hosts autorizziamo la chiave dell’agent. Fatto ciò, eseguiamo l’agent:
# shipyard-agent -url http://172.17.0.12:8000 -key 20603b80ecbb4c30a0e38ad5824a63e4
Adesso possiamo aprire l’interfaccia e iniziare a lavorare con i container, le immagini e quant’altro:
Shipyard è sicuramente più robusto di docker-ui ma, per piccole esigenze, per esempio in laboratori di test, docker-ui può essere sufficiente.
Queste interfacce sono carine, però non ci permettono di fare monitoring. Per quanto riguarda le statistiche, dobbiamo sempre tenere a mente che Docker è costruito sulla base dei cgroups, una feature del kernel con la quale si possono limitare, gestire ed isolare consumo di risorse (CPU, memoria, I/O disco ecc.) di processi e gruppi di processi dal resto del sistema. I dati che ci interessano per realizzare delle statistiche di utilizzo dei container si troveranno quindi, senza grosse sorprese, in /sys/fs/cgroup.
Vedremo in un post successivo come catalogare e visualizzare in modo grafico le statistiche dei container. Per il momento, happy docking!