Liman işçisi için Oracle JDK yok mu?


15
REPOSITORY          TAG       IMAGE ID       CREATED             SIZE
an-image            1         X              26 seconds ago      279 MB

liman işçisi görüntüsü çalıştırıldığında aşağıdaki mesaj gösterilir:

No java installations was detected.
Please go to http://www.java.com/getjava/ and download

Oracle JDK dağıtıldığında docker görüntü boyutu iki kattan fazladır!

REPOSITORY          TAG       IMAGE ID       CREATED             SIZE
an-image            2         X              26 seconds ago      666 MB

Tartışma

"Docker için hiçbir Oracle JDK yok" googled olduğunda yalnızca docker içeren docker görüntüsüne bazı bağlantılar döndürülür. Oracle JDK docker görüntüsüne yerleştirildiğinde boyut iki katından fazla olur. Docker görüntülerini olabildiğince küçük tutmak istiyorum, ancak Oracle JDK görüntünün kendisinden daha büyük görünüyor!

Soru

Liman işçisi için Oracle JDK yok mu?


@peter , tartışmak isterseniz , bilgisayarlara atlamaktan çekinmeyin :)
Tensibai

Yanıtlar:


20

Hayır. Oracle JDK veya JRE'yi dağıtamayacağınızdan, yürürlükteki lisans dağıtıma izin vermez . Üçüncü bir tarafça (uygulamanıza gömülü olarak) dağıtıldığında, çalışmaması için tüm sorumluluk o taraftadır. Bu nedenle, Oracle JDK / JRE'yi herkese açık Docker kayıtlarında veya bu konudaki herhangi bir Linux paket deposunda bulamazsınız.

Kendi görüntünüzü oluşturabilir ve Ubuntu / Debian için webupd8team / java paketini kullanarak Oracle JDK veya JRE'yi yükleyebilirsiniz .

Alpine Linux kullanıyorsanız, bu blog gönderisi hangi bağımlılıkların gerekli olduğunu ve yükleme talimatları için StackOverflow'a bağlantıları açıklar .

Güncelleme : Oracle'ın şimdi Docker Mağazasında resmi bir Docker resmi var . https://blogs.oracle.com/developers/official-docker-image-for-oracle-java-and-the-openjdk-roadmap-for-containers

Bağlantı Docker Mağaza Oracle Java Image - https://store.docker.com/images/oracle-serverjre-8



Uzun süre kullanılabilir olmasına güvenmem. Yazdığım gibi, Oracle lisansı herkese açık olarak dağıtılmasına izin vermiyor - sadece Oracle JDK veya JRE'lerini yasal olarak dağıtabilir. Temel olarak, bu depo yasadışıdır ve büyük olasılıkla yok olacaktır.
Evgeny

Ne yapabilirsiniz yapmak, onların kullanmaktır DockerfileJava ile kendi Docker görüntü elde etmek GitHub'dan s. Örneğin, github.com/anapsix/docker-alpine-java/blob/master/8/121b13/jdk/…
Evgeny

Docker görüntüsü oluşturulduktan sonra, özel docker kayıt defterinde saklamama izin veriliyor mu?
030

1
Evet. Lisans, JDK / JRE'yi ikili biçimde dağıtmayı yasaklar.
Evgeny

8

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, .jardosyalar 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ı RUNkomutta &&yapmanız ve önceki katmandaki dosyaları kaldırarak boyutu kaldıramayacağınız katmanlar eklemekten kaçınmanız gerekir.


3

Docker tarafından sağlanan resmi bir Oracle JDK uygulaması yoktur. Docker , hub.docker.com'da kendi Java kitaplığını destekliyordu, ancak "ilk tanıtıldığından beri OpenJDK'ya özgü" olduğu için gerçek OpenJDK uygulaması lehine reddetti. Akıl yürütmeleri:

Tüm yukarı akıştaki Linux dağıtımlarının tümü, Oracle Java'yı kendi dağıtım kanallarında yeniden dağıtmak istemediğinden, bunları takip etmeyi seçtik. Her bir dağıtımın Oracle Java'yı nasıl dağıtmadığına ilişkin aşağıdaki referanslara bakın.

Docker görüntünüzü olabildiğince küçük tutmak istiyorsanız, bunun yerine OpenJDK kullanmayı düşünün. Resmi bir OpenJDK Dockerfile deposu var ya da sadece kullanabilirsiniz docker pull openjdk. OpenJDK 7 için temel "kullanımı kolay" Dockerfile aşağıdaki gibidir (önceki cümlede listelenen web sitesinden alınmıştır):

FROM openjdk:7
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
RUN javac Main.java
CMD ["java", "Main"]

1
Resmi Oracle JDK yok mu? Bu biraz yanlış veya en azından yanlış ifade edilmiş gibi görünüyor.
Evgeny

1
@Evgeny Kabul ediyorum, niyetin: "Oracle'dan Oracle JDK dahil hiçbir resmi liman işçisi resmi", belki sadece JDK ile uygulama arasında eksik bir "liman işçisi" ...
59'da Tensibai

Hata! Evet, Docker'ı spesifik hale getirmek istedim. Cevabımı düzelttim.
Peter G
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.