Moje obecne rozumienie sytuacji:
- Kontenery Dockera są immutable - wyjąwszy partycje danych nie wprowadza się zmian w raz opublikowanym kontenerze
- W szczególności za anti-pattern uważa się robienie np.
apt-get update && apt-get upgrade -qqy
wewnątrz kontenera - Zamiast powyższego w sytuacji, gdy do upstreamowego oprogramowania używanego wewnątrz naszego kontenera zostaną opublikowane łatki buduje się nowy kontener zawierający nasz program + zaktualizowane oprogramowanie upstreamowe, testuje się to, jeśli wszystko działa OK to wdraża się ten nowy kontener zamiast starego
Z tego wynika, że za każdym razem, gdy do np takiego ubuntu pojawią się aktualizacje, trzeba przebudowywać kontenery nawet jeśli nie ma żadnej innej tego przyczyny?
Czy to nie zajmuje (zbyt) wielu roboczogodzin?
Aktualizacje do ubuntu pojawiają się dość często - co parę dni co najmniej. Zakładam, że:
- Łatki bezpieczeństwa powinny zostać wdrożone możliwie szybko, najchętniej natychmiast po opublikowaniu, inaczej wystawiamy się na ew. zmasowane ataki;
- Ubuntu w wersji LTS powinno być stabilne, z założenia nie powinno być tak, by aktualizacje systemowe coś nam rozwaliły - to samo z Windowsem.
Wobec wszystkiego powyższego sądziłbym, że aktualizacje powinny być ustawione tak, by odbywały się automatycznie, najchętniej bez dodatkowych nakładów czasowych i bez downtime'u (nie wiem, imaginuję sobie jakieś rozwiązanie w tym stylu, że gdy mamy dwie maszyny, na których uruchomiony jest ten sam serwis i mamy do wgrania łatki do OSa i/lub innego upsteamowego oprogramowania, to automatycznie odłączamy jedną maszynę, wgrywamy łatki, maszyna się restartuje, podłączamy ją a odłączamy drugą, aktualizujemy drugą)
A teraz dowiaduję się, że w state-of-the-art-owym rozwiązaniu Dockerowym tak się absolutnie nie robi? Nie rozumiem?