User Tools

Site Tools


doc:appunti:linux:sa:docker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:docker [2025/10/30 11:06] – [Hello World] niccolodoc:appunti:linux:sa:docker [2026/06/10 08:31] (current) – [Gestione delle immagini e dei container] niccolo
Line 36: Line 36:
 </code> </code>
  
-Avendo individuato l'immagine che interessa (**matrixdotorg/synapse**), è possibile scaricarla in locale:+Avendo individuato l'immagine che interessa (**matrixdotorg/synapse**), è possibile scaricarla in locale con **docker pull**:
  
 <code> <code>
Line 57: Line 57:
 </code> </code>
  
 +FIXME Verificare se l'immagine viene da [[https://hub.docker.com]].
 +
 +===== Backup di una immagine =====
 +
 +Dopo aver fatto il pull può essere desiderabile fare un archivio di tutto il software, per eventuali restore futuri. Si verifica quali immagini sono state scaricate:
 +
 +<code>
 +docker images
 +REPOSITORY          TAG       IMAGE ID       CREATED        SIZE
 +metabase/metabase   latest    9b711a0c3625   10 hours ago   966MB
 +</code>
 +
 +Quindi si esegue il backup in un file tar:
 +
 +<code>
 +docker save -o backup_applicazione_<IMAGE_ID>.tar <IMAGE_ID_o_NOME_IMMAGINE>
 +</code>
 +
 +Conviene includere l'IMAGE_ID perché quello identifica l'immagine stessa piuttosto che il nome. Infatti durante il restore una eventuale immagine con lo stesso ID viene sovrascritta. Il restore del file archivio si fa con:
 +
 +<code>
 +docker load -i backup_applicazione_<IMAGE_ID>.tar
 +</code>
 +
 +Se in Docker abbiamo una immagine con lo stesso nome (ma ID diverso, ad esempio a seguito di un aggiornamento che poi si è corrotto) è possibile cambiarle di nome prima di fare il restore della vecchia immagine:
 +
 +<code>
 +docker tag <ID_IMMAGINE_CORROTTA> nome_applicazione:corrotta
 +</code>
 +
 +===== Gestione delle immagini e dei container =====
 +
 +<code>
 +docker images
 +docker ps -a
 +docker start b629dea65cc0
 +docker stop angry_archimedes
 +docker rm 144443902b95
 +docker rm agitated_darwin
 +
 +# Avvia l'immagine automaticamente al boot:
 +docker update --restart unless-stopped 144443902b95
 +</code>
 +
 +Ogni container viene identificato da un ID numerico oppure da un codice mnemonico formato da due parole casuali.
 +
 +===== Esempio di esecuzione di un container =====
 +
 +Proviamo ad eseguire un'istanza di [[https://hub.docker.com/r/matrixdotorg/synapse|Matrix Synapse]], si tratta di un servizio abbastanza complesso che richiede le seguenti risorse:
 +
 +  * Un **file di configurazione**.
 +  * Un **database** di backend, SQLite oppure PostgreSQL.
 +  * Una **porta TCP** su cui porsi in ascolto.
 +
 +<code>
 +docker run matrixdotorg/synapse
 +</code>
 +
 +Viene visualizzato il messaggio:
 +
 +<file>
 +Config file '/data/homeserver.yaml' does not exist. You should either create a new config
 +file by running with the `generate` argument (and then edit the resulting file before
 +restarting) or specify the path to an existing config file with the SYNAPSE_CONFIG_PATH
 +variable.
 +</file>
 +
 +Leggendo la [[https://hub.docker.com/r/matrixdotorg/synapse|documentazione]] si scopre che il container va creato con il parametro **generate**. È necessario inoltre definire alcune variabili d'ambiente con l'opzione **%%-e%%**, collegare un mount del filesystem al container con l'opzione **%%--mount%%**. Le opzioni **%%-it%%** servono a tenere lo STDIN collegato allocando uno pseudo-TTY. L'opzione **%%--rm%%** rimuove automaticamente il container al momento dell'uscita.
 +
 +<code>
 +docker run -it --rm \
 +    --mount type=volume,src=synapse-data,dst=/data \
 +    -e SYNAPSE_SERVER_NAME=my.matrix.host \
 +    -e SYNAPSE_REPORT_STATS=yes \
 +    matrixdotorg/synapse:latest generate
 +</code>
 +===== Risorse impegnate sull'host locale =====
 +
 +^ /var/lib/docker/containers/  | Viene crata una sottodirectory per ogni container creato.  |
 +
 +FIXME
 +
 +===== Trovare le immagini ufficiali di un progetto =====
 +
 +FIXME
 +
 +===== Aggiornamento di un container =====
 +
 +FIXME
 +
 +===== Risorse web =====
 +
 +  * **[[https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-debian-10|How To Install and Use Docker on Debian 10]]**
doc/appunti/linux/sa/docker.1761822362.txt.gz · Last modified: by niccolo