GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Una guida rapida all'uso di Docker Compose

Docker Compose è uno strumento che si integra nativamente con Docker e semplifica la gestione delle applicazioni multi-container.

I vantaggi offerti da Docker Compose sono numerosi, alcuni dei quali includono:

  1. Gestisci facilmente le reti di container: Collegare due container tramite una rete Docker è semplicissimo in Docker Compose, essendo semplice come definire una rete e dire ai container di connettersi ad essa. Inoltre, Docker Compose può creare e distruggere automaticamente le reti mentre crei e distruggi i container stessi.
  2. Dipendenze del contenitore: Hai un container Docker che necessita di un altro container Docker per essere attivo e funzionante, ad esempio un database. Docker Compose ti consente di definire le dipendenze per un container, richiedendo che le dipendenze siano attive e funzionanti prima che si avvii qualsiasi altra cosa.
  3. Impostazioni riproducibili: Poiché l'impostazione del contenitore verrà definita prima ancora che venga creata qualsiasi cosa, ciò consente la riproducibilità delle impostazioni, facilitando il loro trasferimento ad altri sistemi. Anche se in teoria potresti farlo in qualcosa come Bash, può rendere le cose meno flessibili e più difficili da adattare al cambiamento.

Installazione di Docker Compose su Linux

Docker Compose è prontamente disponibile nella maggior parte dei repository di distribuzioni.

Puoi installare Docker Compose su Ubuntu e distribuzioni basate su Debian usando il seguente comando:

sudo apt install docker-compose

Su Arch e Manjaro, puoi usare:

sudo pacman -S docker-compose

Su Fedora, puoi usare il comando dnf:

sudo dnf install docker-compose

Potrebbe essere necessario dedicare un po' più di impegno all'installazione di Docker Compose su CentOS.

Per qualsiasi altra distribuzione, puoi sempre guardare i documenti di installazione per informazioni su come ottenere i pacchetti necessari.

Creazione del nostro primo file di composizione Docker

Questa guida presuppone che tu abbia già familiarità e dimestichezza con lo strumento Docker CLI. Se non lo sei, considera di farlo, altrimenti probabilmente ti imbatterai in un mucchio di semplici intoppi.

I file Docker Compose sono archiviati con il nome docker-compose.yml e vengono trovati automaticamente quando esegui docker-compose comandi nella stessa directory. La sua sintassi assume la forma di, avete indovinato, YAML.

Abbiamo un tutorial dedicato sulle basi di YAML se sei interessato a conoscerlo.

Nozioni di base su YAML che ogni ingegnere DevOps deve conoscereIn qualità di ingegnere DevOps, avrai a che fare molto con i file YAML. È sempre una buona idea comprendere la sintassi di base di YAML. Linux HandbookRakesh Jain

Inizieremo con un file che crea un'istanza Nextcloud, quindi esamineremo come ha effettivamente fatto ciò che ha fatto.

Per prima cosa, devi creare il file di composizione. Crea una directory vuota sul tuo sistema e crea il docker-compose.yml file.

Quindi, riempi il file con il seguente contenuto:

version: '3.5'
services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

networks:
  nextcloud:
    name: nextcloud_docker_network

Ora tutto ciò che devi eseguire è docker-compose up -d e avresti distribuito con successo Nextcloud con Docker.

Ecco la pagina di accesso di Nextcloud.

Capire il nostro file Docker Compose

Ora che hai visto che il file funziona davvero, esaminiamo il contenuto del file in modo che tu possa effettivamente capire cosa sta facendo esattamente.

Il tag 'versione'

version: '3.5'

Per prima cosa, la version etichetta. Questo sta solo specificando la versione del formato di file Docker Compose, poiché versioni diverse avranno una sintassi diversa. In genere si desidera mantenere questa versione all'ultima versione, ma non è necessario, il che può essere utile se si dispone di alcuni file legacy.

Il tag 'servizi'

services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

Successivamente, vedrai i services etichetta. Questo avvia l'elenco di tutte le applicazioni che vengono create quando docker-compose up -d viene eseguito.

Successivamente, iniziamo l'elenco del nostro primo contenitore, nextcloud_app . Questo serve come identificatore per l'app, che può essere utilizzato da altri comandi Docker Compose. Nota che questo non lo è il nome del contenitore stesso, specificato nella parte successiva.

Ora inizi a definire tutto sul tuo contenitore. Ecco una panoramica sul significato di tutti i campi, anche se la maggior parte dovrebbe essere autoesplicativa se conosci già Docker:

  • container_name - Definisce il nome del contenitore. Equivalente al --name opzione.
  • image - Definisce l'immagine da cui estrarre per il contenitore.
  • restart - Definisce la politica di riavvio per il contenitore. Equivalente a --restart .
  • networks - Definisce una rete a cui si connette il contenitore. Questa rete può essere creata o può già esistere. Questo valore funge da identificatore per docker-compose e non è il nome effettivo della rete (che è definito in networks sezione tag).
  • ports - Definisce le porte host a cui il container può connettersi. Equivalente a --publish .
  • volumes - Definisce i volumi per il contenitore. Equivalente a --volume .
  • environment - Definisce le variabili di ambiente per il contenitore. Equivalente a --env . Questa opzione supporta due tipi di sintassi. Il primo è variable: value , che è ciò che viene utilizzato qui. L'altra opzione, che potrebbe essere più familiare se sei abituato alla docker La sintassi della CLI è - variable=value .
  • depends_on - Specifica le dipendenze del contenitore. Viene utilizzato per richiedere che un contenitore non si avvii fino a quando le sue dipendenze non lo sono. Questo accetta i valori dagli elenchi dei contenitori. (Non container_name !)

Il tag 'reti'

networks:
  nextcloud:
    name: nextcloud_docker_network

Ora accedi alle networks etichetta. Viene utilizzato per definire le reti che abbiamo elencato in networks per i nostri contenitori.

All'interno delle networks sezione, per prima cosa elenchi l'identificatore che hai fornito alla rete in services . Ecco, quello era nextcloud .

Successivamente, definisci il nome della rete che può essere visualizzato con docker network ls . Qui lo abbiamo chiamato nextcloud_docker_network .

Se desideri che i contenitori si uniscano a una rete già esistente, dovresti utilizzare la seguente sintassi, sostituendo network_name con il nome della rete Docker:

networks:
  nextcloud:
    external: true
    name: network_name

Ed ecco qua. Questo riassume l'intero file!

Puoi nominare il file yml in qualsiasi modo, ma poi dovrai specificare il nome del file quando usi i comandi docker-compose. Mantenere la tradizione e nominarla docker-compose.yml mantiene i comandi brevi.

Chiudere

Ora conosci le basi dell'utilizzo di Docker Compose e i vantaggi che puoi ottenere attraverso il suo utilizzo. Ora sei anche sulla buona strada per capire cosa stanno facendo le persone quando distribuiscono i loro contenitori tramite i file Compose.

Qualcosa non funziona o hai delle domande persistenti? Puoi lasciarli nella sezione commenti qui sotto.


Docker
  1. Esecuzione di PostgreSQL in Docker, una guida rapida e pratica

  2. Come eseguire Nginx in un contenitore Docker:una guida passo passo

  3. Come usare Docker Compose

  4. Come installare Docker su CentOS

  5. Impostazione del nome host in Docker Compose

Da Docker Compose a Kubernetes con Podman

Installa Navidrome usando Docker

Tutto ciò che devi sapere sull'utilizzo di Docker Compose

Come eseguire Jenkins in Docker usando Docker Compose con volumi

Come installare Docker Compose su Ubuntu

Utilizzo di Docker Desktop per gestire un container