REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 1 X 26 seconds ago 279 MB
po uruchomieniu obrazu dokera wyświetlany jest następujący komunikat:
No java installations was detected.
Please go to http://www.java.com/getjava/ and download
Po wdrożeniu Oracle JDK rozmiar obrazu dokera jest ponad dwukrotnie większy!
REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 2 X 26 seconds ago 666 MB
Dyskusja
Gdy „Czy nie ma Oracle JDK dla okna dokowanego”, są wyszukiwane tylko niektóre łącza do obrazu dokera, które zawierają okno dokowane. Po wdrożeniu Oracle JDK na obrazie dokera rozmiar jest ponad dwukrotnie większy. Chcę, aby obrazy dokerów były jak najmniejsze, ale Oracle JDK wydaje się większy niż sam obraz!
Pytanie
Czy nie ma Oracle JDK dla dokera?
docker
oracle-jdk
030
źródło
źródło
Odpowiedzi:
Nie. Ponieważ nie można rozpowszechniać Oracle JDK ani JRE, obowiązująca licencja nie zezwala na dystrybucję . W przypadku dystrybucji przez stronę trzecią (osadzoną w Twojej aplikacji) cała odpowiedzialność za to, że nie działa, spoczywa na tej stronie. Dlatego nie znajdziesz Oracle JDK / JRE w żadnym publicznym rejestrze Docker ani w żadnym repozytorium pakietów Linuksa.
Możesz stworzyć swój własny obraz i zainstalować Oracle JDK lub JRE za pomocą pakietu webupd8team / java dla Ubuntu / Debian.
A jeśli korzystasz z Alpine Linux, ten post na blogu wyjaśnia, które zależności są wymagane, oraz linki do StackOverflow w celu uzyskania instrukcji instalacji.
Aktualizacja : Oracle ma teraz oficjalny obraz Docker w Docker Store . https://blogs.oracle.com/developers/official-docker-image-for-oracle-java-and-the-openjdk-roadmap-for-containers
Link do Docker Store Oracle Java Image - https://store.docker.com/images/oracle-serverjre-8
źródło
Dockerfile
s na GitHub uzyskać własne Docker obraz z Java. Na przykład github.com/anapsix/docker-alpine-java/blob/master/8/121b13/jdk/…Ponieważ okno dokowane nie jest systemem operacyjnym, nie ma JDK dla okna dokowanego.
Jak rozumiem twoje pytanie, to dlatego, że pełny pakiet JDK jest za duży dla twoich życzeń, w takim przypadku możesz spróbować przełączyć się tylko na JRE i zawierać tylko niezbędne biblioteki.
JDK to skrót od Java Development Kit, JRE to Java Runtime Engine. Dzięki „lenistwu” ze względu na złożoność listy wszystkich potrzebnych zależności nikt nie sprowadza się tylko do niezbędnych bibliotek, ale taka jest droga, jeśli chcesz zmniejszyć zainstalowany rozmiar do ścisłego minimum.
Bardziej użytecznym sposobem może być usunięcie niektórych zainstalowanych rzeczy, które zajmują dużo miejsca:
Istnieją dwa pliki * src.zip, które można usunąć, nie będą one przydatne, a jak widać, katalog lib jest o połowę mniejszy i zawiera wiele rzeczy, których tak naprawdę nie potrzebujesz:
Możesz bez problemu usunąć missoncontrol na serwerze, zakładam, że możesz pozbyć się visualvm, musisz sprawdzić, czy potrzebujesz czegoś w tym katalogu lib, ale nie mogę powiedzieć bez znajomości twojej aplikacji ..
Jedną rzeczą, którą powinieneś zrobić w swoim pliku docker podczas instalacji oracle jdk, jest usunięcie pobranego
.tar.gz
pliku, który jest mniej więcej tego samego rozmiaru co katalog wynikowy, ponieważ.jar
pliki są już skompresowane, tar.gz jest po prostu, aby je „spakować”.Musisz to wszystko zrobić w tym samym
RUN
poleceniu, łącząc łańcuchy,&&
aby uniknąć dodawania warstw, w których nie usuniesz rozmiaru przez usunięcie plików z poprzedniej warstwy.źródło
Docker nie ma oficjalnej implementacji Oracle JDK. Docker obsługiwał własną bibliotekę Java na hub.docker.com, ale wycofał ją na korzyść rzeczywistej implementacji OpenJDK, ponieważ była ona „specyficzna dla OpenJDK od momentu jej pierwszego wprowadzenia”. Ich uzasadnienie:
Jeśli więc chcesz, aby obraz Dockera był jak najmniejszy, rozważ użycie OpenJDK. Istnieje oficjalne repozytorium Dockerfile OpenJDK lub możesz po prostu użyć
docker pull openjdk
. Podstawowy „łatwy w uruchomieniu” plik Docker dla OpenJDK 7 jest następujący (pochodzi ze strony internetowej wymienionej w poprzednim zdaniu):źródło