Aggiornamenti dell'applicazione all'interno dei contenitori Docker?


9

In genere su un server, vengono configurati gli aggiornamenti automatici delle patch relative alla sicurezza. Pertanto, se eseguo MySQL 5.5 e viene rilasciata una nuova patch di sicurezza, Ubuntu Server applicherà l'aggiornamento e riavvierà MySQL per proteggermi in modo automatizzato. Ovviamente, questo può essere disabilitato, ma è utile per quelli di noi che sono un po 'pigri;)

Esiste un simile concetto all'interno di un container Docker? Se eseguo MySQL in un contenitore Docker, devo arrestare costantemente il contenitore, aprire una shell al suo interno, quindi aggiornare e aggiornare MySQL?


Questa è Docker e non una domanda LXC. Dato che i container LXC stessi sono solo un'altra distribuzione di Linux in esecuzione nello stesso kernel, userete semplicemente gli stessi comandi per aggiornare il sistema di container LXC.
phoops,

Risposte:


13

Non sono d'accordo con la risposta accettata. Innanzitutto, dovresti progettare i tuoi contenitori tenendo presente la separazione dello stato (nel caso di MySQL questo significa che almeno /var/lib/mysqlva nel suo volume ). In secondo luogo, è necessario determinare una strategia per gli aggiornamenti; lo stato dell'arte sarebbe quello di creare immagini con versione per ogni set di pacchetti apt aggiornati e farli testare prima di scambiare il volume di dati dal contenitore in esecuzione a uno nuovo. Questo può includere un tempo di inattività o nessun tempo di inattività se si utilizza qualcosa come il mal d'anca .

Questa configurazione, anche se più costosa da installare inizialmente, è la stessa utilizzata dalle aziende con una vasta gamma di container e sarà più economica da mantenere nel tempo.

Inoltre, gli aggiornamenti dei pacchetti possono eventualmente rompere i container in esecuzione, quindi applicarli ai container in esecuzione non è una buona pratica, in quanto non è necessario eseguire software obsoleti.


+1 questa è la migliore pratica. l'archiviazione dei dati su un contenitore server richiede solo problemi.
Booyaa,

4

TL; DR : Se non lo costruisci in te stesso, non accadrà.

Il modo efficace per farlo è semplicemente scrivere uno script iniziale personalizzato per il proprio contenitore specificato CMDin Dockerfile. In questo file, esegui un apt-get update && apt-get upgrade -qqyprima di iniziare qualunque cosa tu stia eseguendo.

Quindi hai un paio di modi per garantire che gli aggiornamenti arrivino al contenitore:

  1. Definire un processo cron nel sistema operativo host per riavviare il contenitore in base a una pianificazione, aggiornandolo e aggiornandolo in base a una pianificazione.
  2. Abbonati agli aggiornamenti di sicurezza dei software, quindi all'aggiornamento di un pacchetto interessato, riavvia il contenitore.

Non è la cosa più semplice da ottimizzare e automatizzare, ma è possibile.


1
Continua a leggere la pagina. deim0s ha una risposta migliore.
mc0e
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.