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/09/02 17:16] – [Risorse web] 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 294: Line 325:
 </code> </code>
  
-===== Comunicazione fra container e macchina ospite =====+===== 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. È 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.
Line 307: Line 338:
  
 Così facendo il software nel container può utilizzare il nome **host.docker.internal** ad esempio per connettersi via TCP alla porta 5432 di PostgreSQL. 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.1788362201.txt.gz · Last modified: by niccolo