Chcę pobrać obraz dockera, aby zbudować aplikację java i spojrzeć na dostępne warianty obrazów OpenJDK. Patrzę tutaj https://github.com/docker-library/openjdk/tree/master/8/jdk i widzę alpejskie, smukłe i okna. Jakie są między nimi różnice i co daje każdy wariant?
java
docker
dockerfile
mailtobash
źródło
źródło
FROM
Pouczające jest również przeczytanie wierszy plików Dockerfiles w podanym łączu. Obrazy Alpine są znacznie mniejsze niż obrazy oparte na Debianie, ale mogą również napotkać problemy ze zgodnością na różne sposoby.Odpowiedzi:
Oto podsumowanie dla dokumentów biblioteki docker (cytat i linki poniżej):
openjdk:<version>
Obraz defacto. Użyj go, jeśli nie masz pewności.
openjdk:<version>-buster
,openjdk:<version>-stretch
iopenjdk:<version>-jessie
buster
,jessie
lubstretch
są nazwami kodowymi pakietów dla wydań Debiana i wskazują, na którym wydaniu jest oparty obraz.openjdk:<version>-alpine
Podobnie, ten obraz jest oparty na systemie Alpine Linux , a zatem jest bardzo małym obrazem podstawowym. Zaleca się, jeśli potrzebujesz, aby rozmiar obrazu był jak najmniejszy. Zastrzeżeniem jest to, że używa niektórych nietypowych bibliotek, ale nie powinno stanowić problemu dla większości programów. W razie wątpliwości sprawdź oficjalne dokumenty poniżej.
openjdk:<version>
(od 12 roku)openjdk:<version>-oracle
iopenjdk:<version>-oraclelinux7
Począwszy
openjdk:12
od domyślnego obrazu, a także warianty-oracle
i-oraclelinux7
są oparte na oficjalnym obrazie Oracle Linux 7 . Pliki binarne OpenJDK w domyślnym obrazie, jak również warianty-oracle
i-oraclelinux7
są tworzone przez Oracle i pochodzą od społeczności OpenJDK .openjdk:<version>-slim
Ten obraz zawiera tylko minimalne pakiety potrzebne do uruchomienia języka Java (i brakuje na przykład wielu bibliotek Java związanych z interfejsem użytkownika). Chyba że pracuje w środowisku, w którym tylko
openjdk
obraz zostanie wdrożony i masz ograniczoną przestrzeń, domyślny obraz jest zalecany przez ten jeden.openjdk:<version>-windowsservercore
Ten obraz jest oparty na systemie Windows Server Core (
microsoft/windowsservercore
) .Pełna dokumentacja ( wersja pokazana poniżej , najnowsza wersja tutaj ):
źródło
Wybierz podstawowy obraz dockera, który odpowiada Twoim potrzebom i pamiętaj, że rozmiar obrazu jest również ważnym aspektem .
Obraz można traktować jako zbiór instrukcji dotyczących tworzenia kontenera. W Dockerze jeden obraz może być dziedziczony z innego obrazu (lub oparty na nim), dodając dodatkowe instrukcje oprócz podstawowych. Każdy obraz składa się z wielu warstw, które są praktycznie niezmienne.
Przeczytaj artykuł Crafting the perfect Java Docker build flow article.
Aby uruchomić aplikację java, potrzebujesz przynajmniej JRE. Na przykład w przypadku projektu wiosennego obraz może być oparty na
slim Alpine Linux with OpenJDK JRE
:Możesz także użyć,
docker history yourImageName
aby zobaczyć wszystkie warstwy (i ich rozmiar), które tworzą twój obraz.źródło