Come installare la stessa versione di un'image docker?

Sulla macchina AI sono installati l'image FOO / BAR dell'adattatore. Come faccio a interrogare la versione di quell'image e come faccio a installare la stessa versione per la macchina B?

Si prega di notare che sulla macchina BI non è necessaria la versione più recente disponibile di FOO / BAR, ma la stessa versione della macchina A. Non voglio mantenere le modifiche locali all'image fatta sulla macchina A.

Docker utilizza un tag o digest per distinguere tra diverse versioni di un'image. Quando si specifica né un tag o un digest, tutti i comandi Docker presuppongono che si desidera utilizzare la variabile predefinita latest . Ma puoi sempre essere più specifico.

Supponendo che l'image proviene da un FOO Registro di sistema e si chiama BAR , ci sono due modi in cui è ansible estrarre la stessa versione dell'image: per tag o per digest. Puoi utilizzare solo il tag se sai che è univoco e non viene riutilizzato. Questo è spesso il caso quando si utilizzano i numbers di build o gli hash di Git come tag, ma se si desidera essere assolutamente sicuri, utilizzare il digest.

Nella macchina A, eseguire le docker images --digests . Cercare FOO/BAR e il suo digest (partendo da sha: .

Nella macchina B, eseguire il seguente command e sostituire {digest} con il digest dalla macchina A:

 docker pull FOO/[email protected]{digest} 

Questo è un esempio di come potrebbe apparire:

 docker pull FOO/[email protected]:e4957dfd892f656ae672dfa03eb7a73f1c47bd24fc95f2231fc5ac91a76092a0 

Questo scaricherà la stessa versione disponibile sulla macchina A alla macchina B. Dal momento che viene dal registro, è una copia fresca senza modifiche.

Utilizza un tag!

l'image del docker support il tag, che viene di solito utilizzato come numero di versione. Quando si crea un'image, è ansible specificare un tag:

 docker build -t myimage:v0.1 . 

Quindi utilizzare la stessa image è facile:

 docker run -d myimage:v0.1 entrypoint.sh 

Se non specifichi un tag, e tutto funziona bene. Poiché il docker utilizza ultimamente il tag predefinito, che può essere fastidioso quando aggiorna e li tiene sincronizzati.

latest image può cambiare tutto il tempo (di solito con l'auto-build CI / CD), quindi il contenitore facile può utilizzare immagini diverse. Se non c'è quello che ti aspettavi, usa sempre un tag!