Usare le Docker Engine API con Node.js

Le Docker Engine API permettono di interagire con Docker in modo programmatico. In questo articolo vedremo come utilizzare Node.js con l'SDK ufficiale per interfacciarsi con il daemon Docker.

Prerequisiti

  • Docker installato e in esecuzione
  • Node.js installato
  • Il pacchetto dockerode installato

Installazione del pacchetto

Per comunicare con Docker in Node.js, utilizziamo dockerode, una libreria che semplifica l'interazione con l'API.

npm install dockerode

Utilizzo dell'SDK

Creiamo un file docker-client.js con il seguente codice per elencare i container esistenti:

const Docker = require('dockerode');
const docker = new Docker();

async function listContainers() {
    try {
        const containers = await docker.listContainers({ all: true });
        console.log(containers);
    } catch (error) {
        console.error('Errore nel recupero dei container:', error.message);
    }
}

listContainers();

Creare e gestire container

Creazione di un container

Per avviare un container con un'immagine specifica:

async function createContainer() {
    try {
        const container = await docker.createContainer({
            Image: 'nginx',
            Cmd: ['nginx', '-g', 'daemon off;'],
            name: 'my-nginx',
        });
        
        await container.start();
        console.log('Container creato e avviato:', container.id);
    } catch (error) {
        console.error('Errore nella creazione del container:', error.message);
    }
}

createContainer();

Gestione di un container esistente

async function stopContainer(containerId) {
    try {
        const container = docker.getContainer(containerId);
        await container.stop();
        console.log(`Container ${containerId} arrestato.`);
    } catch (error) {
        console.error('Errore nell'arresto del container:', error.message);
    }
}

Conclusione

Abbiamo visto come interagire con le Docker Engine API utilizzando Node.js e l'SDK ufficiale dockerode. Questo strumento semplifica l'automazione della gestione dei container.

Torna su