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.