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 [2026/07/29 11:34] – [Comandi utili] niccolodoc:appunti:linux:sa:docker [2026/09/03 09:57] (current) – [Esempio di esecuzione di un container] niccolo
Line 1: Line 1:
 ====== Ambienti isolati (container) con Docker ====== ====== Ambienti isolati (container) con Docker ======
  
 +In Debian 12 Bookworm:
  
 <code> <code>
 apt install docker.io apt install docker.io
 +</code>
 +
 +In Debian 13 Trixie gli eseguibili sono stati divisi in pacchetti diversi:
 +
 +<code>
 +apt install docker.io docker-cli
 </code> </code>
  
Line 58: Line 65:
  
 FIXME Verificare se l'immagine viene da [[https://hub.docker.com]]. FIXME Verificare se l'immagine viene da [[https://hub.docker.com]].
 +
 +La directory dove vengono salvate le immagini è **/var/lib/docker/overlay2/** (ogni immagine può essere composta da più componenti detti //layer//, ad ognuno viene assegnata una sottodirectory il cui nome è un hash univoco).
 +
 +I metadati delle immagini scaricate sono memorizzati nel file **/var/lib/docker/image/overlay2/repositories.json**.
  
 ===== Backup di una immagine ===== ===== Backup di una immagine =====
Line 124: Line 135:
 </file> </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.+Leggendo la [[https://hub.docker.com/r/matrixdotorg/synapse|documentazione]] si scopre che il container va **eseguito una prima volta** 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> <code>
Line 133: Line 144:
     matrixdotorg/synapse:latest generate     matrixdotorg/synapse:latest generate
 </code> </code>
 +
 +L'opzione **%%--mount%%** utilizza il meccanismo del //named volume//, cioè Docker crea la directory **%%/var/lib/docker/volumes/synapse-data%%** e la rende disponibile all'interno del container al punto di montaggio **/data**.
 +
 +Durante l'esecuzione del container viene creato il file di configurazione **/var/lib/docker/volumes/synapse-data/_data/homeserver.yaml**, che può essere ispezionato e modificato.
 +
 +È possibile avviare un container Doker con numerose opzioni inserendole in un opportuno file **docker-compose.yml**, in tal modo si evita di doverle specificare sulla riga di comando.
 +
 +FIXME
 +
 +<code>
 +# Esempio di comando
 +</code>
 +
 +<file>
 +# Esempio di docker-compose.yml
 +</file>
 +
 +Il file **docker-compose.yml** va mantenuto per le successive esecuzioni del container.
 +
 +
 ===== Risorse impegnate sull'host locale ===== ===== Risorse impegnate sull'host locale =====
  
Line 202: Line 233:
   metabase/metabase:latest   metabase/metabase:latest
 </code> </code>
 +
 +Anche questo container può essere modificato per l'auto-restart (a meno che non sia stato fermato manualmente):
 +
 +<code>
 +docker update --restart unless-stopped metabase_63
 +</code>
 +
  
 ===== Comandi utili ===== ===== Comandi utili =====
Line 261: Line 299:
  
 In tal caso va verificato che i due container in esecuzione contemporaneamente non creino problemi a scrivere sugli stessi volumi. In tal caso va verificato che i due container in esecuzione contemporaneamente non creino problemi a scrivere sugli stessi volumi.
 +
 +Esegue un comando shell in un container, ad esempio il comando ''ls -l /metabase.db/'' nel container metabase:
 +
 +<code>
 +docker exec metabase ls -l /metabase.db/
 +</code>
 +
 +Copia una directory intera dal container al filesystem della macchina ospitante:
 +
 +<code>
 +docker cp metabase:/metabase.db/ ./metabase-backup.db
 +</code>
 +
 +Copia due file dal filesystem locale veso il container:
 +
 +<code>
 +docker cp ./metabase-backup.db/metabase.db.mv.db    metabase:/metabase.db/
 +docker cp ./metabase-backup.db/metabase.db.trace.db metabase:/metabase.db/
 +</code>
 +
 +Esegue una shell interattiva nel container:
 +
 +<code>
 +docker exec -it metabase sh
 +</code>
 +
 +===== Comunicazione TCP/IP fra container e macchina ospite =====
 +
 +È possibile consentire ad un container di comunicare con la macchina ospite, ad esempio un applicativo in esecuzione dentro il container può utilizzare il database PostgreSQL in esecuzione sulla macchina ospite.
 +
 +Si può utilizzare la seguente opzione per aggiungere il nome di un host all'interno del container quando lo si avvia:
 +
 +<code>
 +docker run \
 +    --add-host=host.docker.internal:host-gateway \
 +    myimage
 +</code>
 +
 +Così facendo il software nel container può utilizzare il nome **host.docker.internal** ad esempio per connettersi via TCP alla porta 5432 di PostgreSQL.
 +
 +In generale la macchina ospite ha l'interfaccia di rete **doker0** con indirizzo **172.17.0.1/16**, quindi PostgreSQL dovrà accettare le connessioni provenienti da quella rete. Nel file di configurazione **/etc/postgresql/17/main/pg_hba.conf** si aggiunge una riga per l'autenticazione con password:
 +
 +<file>
 +host    mydatabase    myuser    172.17.0.0/16    scram-sha-256
 +</file>
  
 ===== Risorse web ===== ===== 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]]**   * **[[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.1785317672.txt.gz · Last modified: by niccolo