Docker bir işletim sistemi olmadığından, docker için JDK yoktur.
Sorunuzu anladığım kadarıyla, tam bir JDK isteğiniz için çok büyük, bu durumda sadece JRE'ye geçmeyi deneyebilir ve sadece gerekli kütüphaneleri dahil edebilirsiniz.
JDK, Java Geliştirme Kiti'nin kısaltmasıdır, JRE, Java Runtime Engine'in kısaltmasıdır. "Tembellik" sayesinde, ihtiyaç duyulan her bağımlılığı listeleyen karmaşıklık nedeniyle hiç kimse sadece gerekli kitaplıklara geçmez, ancak yüklü boyutu sıkı bir şekilde azaltmak istiyorsanız, bu yoldur.
Daha kullanışlı bir yol, çok fazla yer kaplayan yüklü şeylerden bazılarını çıkarmak olabilir:
/usr/lib/jvm/jdk1.8.0_101$ du -hs *
776K bin
4.0K COPYRIGHT
5.7M db
208K include
4.9M javafx-src.zip
187M jre
133M lib
4.0K LICENSE
2.0M man
4.0K README.html
4.0K release
21M src.zip
108K THIRDPARTYLICENSEREADME-JAVAFX.txt
176K THIRDPARTYLICENSEREADME.txt
Kaldırılabilecek iki * src.zip var, bunlar kullanılmayacak ve lib dizininin yarısı büyüklüğünde olduğunu ve içinde gerçekten ihtiyacınız olmayan bir sürü şey olduğunu görebilirsiniz:
/usr/lib/jvm/jdk1.8.0_101$ du -hs lib/*
120K lib/amd64
1.2M lib/ant-javafx.jar
18M lib/ct.sym
160K lib/dt.jar
20K lib/ir.idl
36K lib/javafx-mx.jar
400K lib/jconsole.jar
12K lib/jexec
60M lib/missioncontrol
4.0K lib/orb.idl
8.0K lib/packager.jar
2.4M lib/sa-jdi.jar
18M lib/tools.jar
34M lib/visualvm
Eğer sorunsuz bir sunucuda missoncontrol kaldırmak, ben de visualvm kurtulmak varsayalım, bu lib dizinde bir şeye ihtiyacınız olup olmadığını kontrol etmek zorunda kalacak, ama ben app bilmeden söyleyemem ..
Oracle jdk'yi yüklerken dockerfile dosyasında yapmanız gereken bir şey .tar.gz
, .jar
dosyalar zaten sıkıştırılmış olan sonuç diziniyle kabaca aynı boyutta olan indirilen dosyayı kaldırmaktır , tar.gz onları "paketlemek" için sadece oradadır.
Tüm bunları aynı RUN
komutta &&
yapmanız ve önceki katmandaki dosyaları kaldırarak boyutu kaldıramayacağınız katmanlar eklemekten kaçınmanız gerekir.