Czy można wygenerować plik dokowania z obrazu? Chcę wiedzieć z dwóch powodów:
Mogę pobierać obrazy z repozytorium, ale chciałbym zobaczyć przepis, który je wygenerował.
Podoba mi się pomysł zapisywania migawek, ale kiedy już to zrobię, dobrze byłoby mieć ustrukturyzowany format do przeglądu tego, co zostało zrobione.
image
repository
docker
użytkownik1026169
źródło
źródło
Odpowiedzi:
Możesz.
Wyciągnie automatycznie docelowy obraz dokera i wyeksportuje
Dockerfile
. Parametr-sV=1.36
nie zawsze jest wymagany.Odniesienie: https://hub.docker.com/repository/docker/alpine/dfimage
poniżej jest stara odpowiedź, to już nie działa.
źródło
Aby zrozumieć, jak zbudowano obraz dokera, użyj
docker history --no-trunc
polecenia.Możesz zbudować plik dokera z obrazu, ale nie będzie on zawierał wszystkiego, co chciałbyś w pełni zrozumieć, w jaki sposób obraz został wygenerowany. Rozsądnie można wyodrębnić części MAINTAINER, ENV, EXPOSE, VOLUME, WORKDIR, ENTRYPOINT, CMD i ONBUILD z pliku dockerfile.
Poniższy skrypt powinien działać dla Ciebie:
Używam tego jako części skryptu do odbudowywania działających kontenerów jako obrazów: https://github.com/docbill/docker-scripts/blob/master/docker-rebase
Plik Docker jest przydatny głównie, jeśli chcesz móc ponownie spakować obraz.
Należy pamiętać, że obraz dokera może być po prostu kopią zapasową tar rzeczywistej lub wirtualnej maszyny. W ten sposób wykonałem kilka obrazów dokerów. Nawet historia kompilacji pokazuje mi importowanie ogromnego pliku tar jako pierwszy krok w tworzeniu obrazu ...
źródło
Error response from daemon: page not found
Jakoś absolutnie przegapiłem rzeczywiste polecenie w przyjętej odpowiedzi, więc tutaj znowu, nieco bardziej widoczne w swoim akapicie, zobaczyć, ile osób jest takich jak ja
źródło
ub.docker.com/r/chenzj/dfimage
? To nawet nowsza odpowiedź.docker history
drukuje wiersze Dockerfile w odwrotnej kolejności i upuszczaRUN
instrukcje (dostajesz tylko samo polecenie, a nieRUN
klucz przed nim) i inne rzeczy, więc musisz go edytować ręcznie, aby dostać się do pliku Docker. To inne narzędzie może wykonać tę edycję automatycznie dla ciebie (nie próbowałem, więc nie wiem.)Rozwiązanie bash:
Wyjaśnienia krok po kroku:
Przykład:
źródło
W tym momencie nie jest to możliwe (chyba że autor obrazu wyraźnie dołączył plik Docker).
Jest to jednak zdecydowanie przydatne! Istnieją dwie rzeczy, które pomogą uzyskać tę funkcję.
źródło
Zaktualizuj grudzień 2018 do odpowiedzi BMW
źródło
Wywodzi się to z odpowiedzi @ fallino, z pewnymi poprawkami i uproszczeniami poprzez użycie opcji formatu wyjściowego dla historii dokera . Ponieważ macOS i Gnu / Linux mają różne narzędzia wiersza poleceń, wymagana jest inna wersja dla komputerów Mac. Jeśli potrzebujesz tylko jednego lub drugiego, możesz po prostu użyć tych linii.
źródło
poniżej jest ouput polecenia dfimage: -
$ dfimage 0f1947a021ce
Z węzła: 8 WORKDIR / usr / src / app
Plik COPY: e76d2e84545dedbe901b7b7b0c8d2c9733baa07cc821054efec48f623e29218c w ./
RUN / bin / sh -c npm install
KOPIA reż: a89a4894689a38cbf3895fdc0870878272bb9e09268149a87a6974a274b2184a w.
EKSPOZYCJA 8080
CMD [„npm” „start”]
źródło