2015-09-07 11 views
5

Jestem bardzo nowy w firmie Docker i obecnie staram się zrozumieć, czy istnieje jakikolwiek przewodnik po aktualizacji oprogramowania, który działa w kontenerze dokowania w bardzo dużym środowisku rozproszonym. Znalazłem już kilka wpisów dotyczących aktualizowania bazy danych MySQL w oknie dokowanym itp. Daje to dobrą wskazówkę dla oprogramowania przechowującego dane, ale co jeśli chcesz zaktualizować inne części lub własny pakiet oprogramowania lub usług, które są dystrybuowane i używane przez kilka innych obrazów w doku dzięki funkcji dokowania?Jak zaktualizować oprogramowanie wewnątrz kontenera w doku?

Czy jest ktoś z doświadczeniem z prawdziwego życia robiącym to w takim środowisku, który może mi pomóc lub innym początkującym zrozumieć najlepsze praktyki w dokowaniu, jeśli takie istnieją.

Dzięki za pomoc!

Odpowiedz

1

Nigdy nie aktualizujesz oprogramowania w uruchomionym kontenerze. Nowa wersja pochodzi z hub. Jeśli założymy, że używasz najnowszego tagu (co jest złym pomysłem, zawsze przypnij swoje wersje) do obrazu, a jest to jeden z oficjalnych obrazów biblioteki lub publicznie dostępny, który używa automatycznych kompilacji, otrzymasz najnowszą wersję obraz pojemnika po wyciągnięciu obrazu.

Zakłada się, że dane z kontenera zostały również oddzielone jako wolumin hosta lub wzorzec kontenera danych.

Kontener należy uznać za niezmienny, jeśli zmienisz jego stan, przestanie on być prawdziwą wersją obrazu.

+0

Co zrobić, jeśli masz wiele małych pojemników skomponowanych z kompilatorem docker, który buduje twoje oprogramowanie? Czy te zmiany powodują przestój? W najlepszym wypadku nie chcę mieć czasu przestoju –

+0

Jeśli część pliku Dockerfile odnoszącego się do wywołań kompilacji w 'docker-compose.yml' zawiera pobieranie i kompilowanie kodu źródłowego lub aktualizację za pośrednictwem menedżera pakietów, uruchomisz nowy obraz . Re: bez przestojów - czy możesz opublikować swój "docker-compose.yml", to może mi pomóc w ulepszeniu mojej odpowiedzi. – booyaa

+0

Do tej pory jest to raczej pytanie teoretyczne niż coś, co robię w praktyce. Wystarczy pomyśleć o przykładzie z większym środowiskiem rozproszonym, a nie o przykładowym obrazie dokowanego. Aktualizacja przez menadżera pakietów oznacza, że ​​po prostu łączysz się z obrazem przez ssh i uruchamiasz, na przykład 'npm'? Czy zrobiłbyś to wszystko w uruchomionym pojemniku, czy używałbyś innej wersji obrazu/kontenera i po prostu "magicznie" przestawiłbyś działanie z nową wersją? –

Powiązane problemy