Rapida Guida ai Docker
per installare Docker su Linux occorre agganciare il repository corretto ad apt-get. Per info dettagliate seleziona la piattaforma qui
Platform | Docker CE x86_64 | Docker CE ARM | Docker CE IBM Z (s390x) | Docker EE x86_64 | Docker EE IBM Z (s390x) |
---|---|---|---|---|---|
CentOS | |||||
Debian | |||||
Fedora | |||||
Microsoft Windows Server 2016 | |||||
Oracle Linux | |||||
Red Hat Enterprise Linux | |||||
SUSE Linux Enterprise Server | |||||
Ubuntu |
eseguire i seguenti comandi da utente root (o sudo):
apt-get update
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce=<VERSION STRING>
per vedere le versioni disponibili di Docker, eseguire il comando:
apt-cache madison docker-ce
la prima cosa da valutare è se si vuole containerizzare l'esecuzione di una singola applicazione di uso comune (apache, python, ffmpeg/ffserver,tomcat...) o un sistema complesso.
Per partire si può cercare un container già disponibile che corrisponda alle esigenze. Questa ricerca può essere fatta da linea di comando con docker search <chiave di ricerca> o dal sito https://store.docker.com.
N.B.: in caso di utilizzo di software di uso comune, considerare l'utilizzo del Docker marcato come Official, se disponibile
Il nome del pacchetto sarà tipicamente della forma docker_name/tag. Nei docker ufficiali di solito il docker_name indica il programma ed il tag viene usato per distribuire le differenti versioni, mentre per i file creati dalla community il docker_name è il nome utente ed il tag il progetto specifico (tipo github o composer).
Una volta identificato, il pacchetto necessario si può scaricare con:
docker pull docker_name
/tag
Questo va ad aggiungere l'immagine del container al repository locale, visibile tramite docker images.
Il repository può essere modificato editando il file /etc/default/docker, scommentando il parametro DOCKER_OPTS ed aggiungendo il flag -d /path/del/repository.
Di seguito alcuni comandi
//Per visualizzare la lista delle immagini docker images
//oppuredocker image ls //Per eliminare un'immagine dal repository docker image rm username/tag
Dopo aver scaricato l'immagine si può creare un container tramite il comando docker run (e alcune flag utili):
//Per lanciare un container come Daemon docker run -d -p [PORTA_ESTERNA]:[PORTA_DEL_CONTAINER] --name nome_container docker_name/tag //Per lanciare un container in modalità interattiva docker run -i -t -p [PORTA_ESTERNA]:[PORTA_DEL_CONTAINER] --name nome_container docker_name/tag FLAG UTILI --entrypoint=[comando]
Permette di modificare il comando di default del docker. ad esempio per lanciare una shell: --entrypoint=/bin/sh-v /host/absolute/path:/container/absolute/path
Permette di montare un path dell'host all'interno del container (ATTENZIONE!) --net vnet_name Aggiunge il container ad una lan virtuale. I container nella stessa lan virtuale possono comunicare senza dover definire le porte disponibili. La rete deve essere stata creata con il comando docker network create vnet_name (docker network rm per eliminare)
Una volta creato il container, questo può essere controllato con i comandi:
docker stop nome_container
docker stae nome_container
Per vedere l'elenco dei container (ed eventualmente eliminarli):
//lista container attivi (in esecuzione,include i nomi dei container)
docker container ls
//lista container presenti (non cancellati)
docker container ls -a [--no-trunc]
//per cancellare un container disattivato
docker container rm nome_container
Le operazioni di deploy possono essere automatizzate creando un Dockerfile, dove è possibile definire le operazioni per la creazione di un immagine a partire da immagini precedenti.
//Esempio di Dockerfile
//L'immagine verrà preparata a partire dall'immagine busybox
FROM busybox
//qui viene definita una variabile del Dockerfile
ENV foo /bar
//Il container utilizzerà la cartella seguente come cartella corrente
WORKDIR ${foo} # WORKDIR /bar
//scelgo di copiare il contenuto della cartella dell'host in cui è presente questo Dockerfile (.) all'interno della cartella $foo del container
//NB: i file vengono copiati all'interno. qualsiasi modifica all'interno del container non verrà trasportata all'esterno
ADD . $foo # ADD . /bar
//qui viene definito il comando di default del container, che verrà esequito all'avvio
CMD echo $foo
Una volta definito il Dockerfile, si può costruire l'immagine tramite il comando:
docker build -t image_name /path/to/dockerfile/location/
Per documentazione sui Dockerfile, vedi qui: https://docs.docker.com/engine/reference/builder/