REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 1 X 26 seconds ago 279 MB
ketika gambar buruh pelabuhan akan dijalankan, pesan berikut ini ditampilkan:
No java installations was detected.
Please go to http://www.java.com/getjava/ and download
Ketika Oracle JDK digunakan, ukuran gambar buruh pelabuhan lebih dari dua kali lipat!
REPOSITORY TAG IMAGE ID CREATED SIZE
an-image 2 X 26 seconds ago 666 MB
Diskusi
Ketika "Apakah tidak ada Oracle JDK untuk buruh pelabuhan" googled hanya beberapa tautan ke gambar buruh pelabuhan yang berisi buruh pelabuhan dikembalikan. Ketika Oracle JDK digunakan dalam gambar buruh pelabuhan ukurannya lebih dari dua kali lipat. Saya ingin menyimpan gambar buruh pelabuhan sekecil mungkin, tetapi Oracle JDK tampaknya lebih besar dari gambar itu sendiri!
Pertanyaan
Apakah tidak ada Oracle JDK untuk buruh pelabuhan?
docker
oracle-jdk
030
sumber
sumber
Jawaban:
Tidak. Karena Anda tidak dapat mendistribusikan Oracle JDK atau JRE, lisensi yang berlaku tidak mengizinkan distribusi . Ketika didistribusikan oleh pihak ketiga (disematkan dengan aplikasi Anda) semua tanggung jawab untuk itu tidak berfungsi adalah pihak itu. Inilah sebabnya mengapa Anda tidak akan menemukan Oracle JDK / JRE di salah satu pendaftar Docker publik, atau dalam repositori paket Linux apa pun.
Anda dapat membuat gambar Anda sendiri, dan menginstal Oracle JDK atau JRE menggunakan paket webupd8team / java untuk Ubuntu / Debian.
Dan jika Anda menggunakan Alpine Linux , posting blog ini menjelaskan dependensi mana yang diperlukan, dan tautan ke StackOverflow untuk instruksi instalasi.
Pembaruan : Oracle memiliki gambar Docker resmi di Docker Store sekarang. https://blogs.oracle.com/developers/official-docker-image-for-oracle-java-and-the-openjdk-roadmap-for-containers
Tautan ke Docker Store Oracle Java Image - https://store.docker.com/images/oracle-serverjre-8
sumber
Dockerfile
di GitHub untuk mendapatkan gambar Docker Anda sendiri dengan Java. Misalnya github.com/anapsix/docker-alpine-java/blob/master/8/121b13/jdk/…Karena buruh pelabuhan bukan sistem operasi, tidak ada JDK untuk buruh pelabuhan.
Ketika saya memahami pertanyaan Anda, itu adalah JDK penuh terlalu besar untuk keinginan Anda, dalam hal ini Anda dapat mencoba beralih ke JRE saja dan hanya menyertakan perpustakaan yang diperlukan.
JDK adalah singkatan dari Java Development Kit, JRE adalah satu untuk Java Runtime Engine. Dengan "lazyness" karena kerumitan untuk mendaftar setiap ketergantungan yang diperlukan, tidak ada yang menghapus hanya ke perpustakaan yang diperlukan, tetapi itu adalah cara untuk pergi jika Anda ingin mengurangi ukuran yang diinstal ke minimum yang ketat.
Cara yang lebih bermanfaat dapat menghapus beberapa hal yang diinstal yang menghabiskan banyak ruang:
Ada dua * src.zip yang dapat dihapus, mereka tidak akan berguna, dan seperti yang Anda lihat direktori lib adalah setengah ukuran dan di dalamnya Anda memiliki banyak hal yang tidak Anda perlukan:
Anda dapat tanpa masalah menghapus missoncontrol di server, saya berasumsi Anda dapat menyingkirkan visualvm juga, Anda harus memeriksa apakah Anda memerlukan sesuatu di direktori lib ini, tapi saya tidak tahu tanpa mengetahui aplikasi Anda ..
Satu hal yang harus Anda lakukan di dockerfile saat memasang oracle jdk adalah menghapus
.tar.gz
file yang diunduh yang kira-kira sama ukurannya dengan direktori yang dihasilkan karena.jar
file sudah dikompresi, tar.gz ada di sana untuk "mengemas" mereka.Anda harus melakukan semua ini dalam
RUN
perintah yang sama , chaining dengan&&
untuk menghindari menambahkan lapisan di mana Anda tidak akan menghapus ukuran dengan menghapus file dari lapisan sebelumnya.sumber
Tidak ada implementasi Oracle JDK resmi yang disediakan oleh Docker. Docker digunakan untuk mendukung perpustakaan Java mereka sendiri di hub.docker.com, tetapi mereka menolaknya demi implementasi OpenJDK yang sebenarnya karena "khusus-OpenJDK sejak pertama kali diperkenalkan". Alasan mereka:
Jadi jika Anda ingin menyimpan gambar Docker sekecil mungkin, pertimbangkan untuk menggunakan OpenJDK sebagai gantinya. Ada repositori OpenJDK Dockerfile resmi atau Anda bisa menggunakannya
docker pull openjdk
. Dockerfile 7 "mudah dijalankan" untuk OpenJDK 7 adalah sebagai berikut (diambil dari situs web yang tercantum dalam kalimat sebelumnya):sumber