PAGE
Docker Commands
Elenco dei comandi Docker più utilizzati
Immagini
docker images
docker build -t nome_tua_immagine .
//da un file specifico
docker build . -f docker/Dockefile -t my-image-app:latest
docker rmi nome_immagine
Container
docker ps -a
docker container create --name container_test nome_immagine
docker container run nome_immagine //nome generato automaticamente
docker container run --name container_test nome_immagine
docker rm <codice_container> o <nome_container>
Per ottenere il codice lancia docker ps -a e prendi l’ID basta inserire le prime 2/3 cifre se è univoco
docker start <codice_container> o <nome_container>
docker stop <codice_container> o <nome_container>
Importante : eseguire Shell Bash in un Container
docker exec -ti <codice_container> bash
Esempio:
docker exec -ti 068 bash
Importante : eseguire un comando e distruggere il container
docker run -it --rm mia_immagine bash
Esempio:
docker run -it --rm ruby:latest bash
Docker run è per la creazione di contenitori.
È importante differenziarlo da exec, utilizzato per interagire con i contenitori già in esecuzione.
Approfondimento : Dati e Volumi
Dati temporanei
I dati possono essere temporaneamente conservati all’interno di un contenitore Docker in due modi. Per impostazione predefinita, i file creati da un’applicazione all’interno di un contenitore sono memorizzati nel livello scrivibile del contenitore. Non devi impostare nulla. Questo è il modo rapido e sporco. Basta salvare un file e occuparsi della tua attività. Tuttavia, quando il container cessa di esistere, lo saranno anche i tuoi dati.
Dati persistenti
Esistono due modi per conservare i dati oltre la durata del contenitore. Un modo consiste nel legare mount di un file system al contenitore. Con un bind mount, anche i processi all’esterno di Docker possono modificare i dati.
I volumi sono il modo migliore per conservare i dati.
Un volume è un file system che risiede su una macchina host al di fuori di qualsiasi contenitore. I volumi sono creati e gestiti da Docker.
Creare Volumi
I volumi possono essere creati tramite un Dockerfile o una richiesta API.
docker volume create --name my_volume
docker volume rm my_volume //Eliminare un volume
Cancellare tutti i volumi delle immagini cancellate
docker volume prune (RISCHIOSOOOOOOO --> cancella tutti i volumi, tutti dischi!!!!)
docker volume ls
Esempio di esecuzione di un app con node su docker
#docker build -t my_immagine_node . -> crea l'immagine con il nome indicato con un Dockerfile from NODE
#docker run --rm -it -v ${PWD}:/usr/src/app -v volume_my_immagine_node_cache:/root/.npm my_immagine_node npm install
#docker run --rm -it -v ${PWD}:/usr/src/app -v volume_my_immagine_node_cache:/root/.npm -p 8080:8080 my_immagine_node npm run serve
cointainer dell’imm per ogni comando che ci serve,elimina il container al termine del comando con –rm è interattivo con -it monta due volumi -v uno per il codice sorgente,l’altro per la cache dei node modules -p espone la porta del container all’esterno