Jestem nieco zdezorientowany tymi dwiema opcjami. Wydają się być spokrewnieni. Jednak nie są one zgodne.Czy należy używać plików Docker lub obrazów zatwierdzonych?
Na przykład, wydaje się, że używanie Dockerfiles oznacza, że naprawdę nie powinieneś angażować się w obrazy, ponieważ naprawdę powinieneś po prostu śledzić Dockerfile in git i wprowadzać w nim zmiany. Wtedy nie ma dwuznaczności co do autorytatywności.
Jednak obrazy wydają się naprawdę ładne. Jest tak wspaniały, że możesz po prostu zmodyfikować kontener bezpośrednio i oznaczyć zmiany, aby utworzyć kolejny obraz. Rozumiem, że można nawet uzyskać coś w rodzaju diff systemu plików z historii zmian obrazu. Niesamowite. Ale wtedy nie powinieneś używać Dockerfiles. W przeciwnym razie, jeśli dokonasz zatwierdzenia obrazu, będziesz musiał wrócić do pliku Docker i wprowadzić pewne zmiany, które reprezentują to, co zrobiłeś.
Więc jestem rozdarty. Uwielbiam pomysł zatwierdzania obrazów: nie musisz reprezentować swojego stanu obrazu w pliku Dockerfile - możesz go po prostu śledzić bezpośrednio. Ale nie podoba mi się rezygnacja z pomysłu na jakiś plik manifestu, który daje szybki przegląd tego, co jest na obrazie. Jest też niepokojące widzieć dwie funkcje w tym samym pakiecie oprogramowania, które wydają się być niezgodne.
Czy ktoś ma jakieś przemyślenia na ten temat? Czy korzystanie z zatwierdzania obrazów jest uważane za złą praktykę? A może powinienem porzucić moje przywiązanie do plików manifestu z moich dni lalkowych? Co powinienem zrobić?
Aktualizacja:
Do wszystkich tych, którzy uważają, że jest to pytanie na podstawie opinii, nie jestem taki pewien. Jest w tym trochę subiektywnych cech, ale myślę, że to głównie obiektywne pytanie. Ponadto uważam, że dobra dyskusja na ten temat będzie miała charakter informacyjny.
Mam nadzieję, że każdy, kto przeczyta ten post, lepiej zrozumie, w jaki sposób pliki Dockerfiles i obrazy są ze sobą powiązane.
Aktualizacja - 18.07.2017:
Właśnie niedawno odkryto legalnego wykorzystania za obraz zobowiązuje. Właśnie utworzyliśmy rurociąg CI w naszej firmie i podczas jednego z etapów testów nasze testy aplikacji są przeprowadzane wewnątrz kontenera. Musimy pobrać wyniki pokrycia z opuszczonego kontenera po wygenerowaniu go przez proces testowego (w systemie plików kontenera) i kontener przestał działać. W tym celu korzystamy z zatwierdzania obrazów, zatwierdzając zatrzymany kontener, aby utworzyć nowy obraz, a następnie uruchamiając polecenia, które wyświetlają i zrzucają plik pokrycia na standardowe wyjście. Więc jest to wygodne. Poza tym bardzo konkretnym przypadkiem używamy Dockerfiles do definiowania naszych środowisk.
Tu jest wiele filozofii, a filozofie ludzi różnią się, co może być złym pytaniem dla SO. Jednak moja własna filozofia - zawsze chcesz dokładnie wiedzieć, jak odtworzyć dany obraz i być pewnym, że możesz to zrobić. Używając złotych obrazów, bardzo łatwo jest nie wiedzieć, w jaki sposób ktoś przeszedł od stanu A do stanu B, podczas gdy automatyzacja napędza proces budowania, nie można zapomnieć. Tak więc, osobiście, tak, nazywam Dockerfiles Prawą Rzeczą, a obraz przedstawia (jak * każdy * rodzaj złotego obrazu, który polega na ręcznej interwencji do budowania) zła. Ale to ja i YMMV. –
@CharlesDuffy Gdzie powinno być to pytanie, jeśli nie należy ono do SO? –
@CharlesDuffy Przy okazji, nie zgadzam się, że jest to pytanie oparte na opiniach. Tutaj powinna być właściwa odpowiedź, jeśli nie właściwa odpowiedź, która zależy od nieco więcej kontekstu. FYI, głosowałem, aby przenieść moje pytanie do Serverfault. –