Docker bekerja dengan Java dengan aplikasi pembungkusan dan kebergantungan ke dalam bekas mudah alih. Untuk menjalankan aplikasi Java di Docker, buat fail Docker yang mentakrifkan langkah -langkah membina. Dockerfile asas menggunakan imej asas Java seperti OpenJDK: 17-JDK-Slim, menetapkan direktori kerja, menyalin fail balang, dan menentukan arahan entri. Kemudian, bina imej dengan Docker Build -t My-Java-App dan jalankan dengan Docker Run. Memilih perkara imej asas yang betul untuk kestabilan, saiz, dan pilihan pelesenan termasuk Eclipse-Temurin, OpenJDK, dan AdoptOpenjdk. Untuk pengoptimuman, gunakan pelbagai peringkat membina untuk mengurangkan saiz imej, arahan kumpulan untuk meminimumkan lapisan, dan lebih suka imej berasaskan langsing atau alpine. Mengendalikan konfigurasi melalui pembolehubah persekitaran atau jumlah yang dipasang dan menguruskan pembalakan melalui STDOUT/STDERR atau jumlah yang berterusan untuk debugging.
Docker bekerja dengan Java dengan pembungkusan aplikasi Java dan kebergantungan mereka ke dalam bekas ringan dan mudah alih. Persediaan ini memastikan aplikasi berjalan secara konsisten di seluruh persekitaran yang berbeza -sama ada mesin tempatan anda, pelayan ujian, atau pengeluaran. Idea utama ialah Docker membungkus semua keperluan aplikasi Java anda (seperti JVM, perpustakaan, fail konfigurasi, dan lain -lain) ke dalam imej, yang kemudiannya boleh dijalankan di mana -mana sebagai bekas.
Cara menjalankan aplikasi Java di Docker
Untuk mendapatkan aplikasi Java yang berjalan di Docker, anda biasanya membuat Dockerfile
. Fail ini mentakrifkan langkah -langkah yang diperlukan untuk membina imej Docker anda.
Inilah contoh asas:
# Gunakan runtime Java rasmi sebagai imej asas Dari OpenJDK: 17-JDK-Slim # Tetapkan direktori kerja di dalam bekas Workdir /App # Salin fail balang yang disusun ke dalam bekas Salin my-app.jar app.jar # Tentukan arahan untuk menjalankan aplikasi Java Entrypoint ["java", "-jar", "app.jar"]
Sebaik sahaja anda mempunyai fail ini, anda boleh membina imej menggunakan:
Docker Build -t My-Java-App.
Dan jalankan seperti ini:
Docker Run -P 8080: 8080 My-Java-App
Dengan cara ini, aplikasi Java anda kini terkandung dan bersedia untuk pergi.
Memilih gambar asas Java yang betul
Salah satu keputusan yang paling penting apabila menggunakan Docker dengan Java adalah memilih imej asas yang betul. Pilihan biasa termasuk:
-
eclipse-temurin
: Imej temurin rasmi yang dikekalkan oleh Yayasan Eclipse. -
openjdk
: Imej Sumber Terbuka (walaupun kurang aktif dikekalkan hari ini). -
adoptopenjdk/openjdkXX-ubuntu
: Sebelum ini popular, tetapi adoptopenjdk telah berpindah ke adopsium di bawah temurin.
Anda harus memilih berdasarkan:
- Kestabilan dan sokongan
- Saiz (versi langsing lebih baik untuk imej yang lebih kecil)
- Kebimbangan lesen (sesetengah syarikat lebih suka temurin untuk kegunaan perusahaan)
Sebagai contoh, jika anda membina aplikasi Boot Spring, menggunakan eclipse-temurin:17-jdk-jammy
mungkin sesuai kerana ia diselaraskan dengan baik dan dilengkapi dengan JDK penuh.
Mengoptimumkan Docker Membina Aplikasi Java
Aplikasi Java boleh membawa kepada imej Docker yang besar jika tidak ditangani dengan teliti. Berikut adalah beberapa cara untuk menjaga perkara bersandar:
- Gunakan Multi-Stage Builds -Susun kod anda dalam satu peringkat dan salin hanya balang akhir ke imej runtime yang minimum.
- Elakkan lapisan yang tidak perlu - Perintah kumpulan di mana mungkin untuk mengurangkan saiz imej.
- Gunakan imej berasaskan langsing atau alpine -terutamanya dalam pengeluaran.
Contoh membina pelbagai peringkat:
# Membina peringkat Dari Maven: 3.8.6-JDK-17 sebagai membina Workdir /App Salin pom.xml. Jalankan ketergantungan MVN: Selesaikan Salin. . Jalankan pakej MVN # Peringkat Runtime Dari Eclipse-Temurin: 17-JDK-alpine Workdir /App Salin-dari Build /App/Target/my-app.jar app.jar Entrypoint ["java", "-jar", "app.jar"]
Pendekatan ini menyimpan imej terakhir yang kecil dan bersih sambil membiarkan anda membina projek anda di dalam Docker.
Mengendalikan konfigurasi dan pembalakan
Apabila menjalankan aplikasi Java di Docker, konfigurasi dan pembalakan memerlukan perhatian khusus.
Konfigurasi : Luar Konfigurasi anda menggunakan pembolehubah persekitaran atau fail konfigurasi yang dipasang sebagai jumlah. Contohnya:
docker run -e spring_profiles_active = prod my-java-app
Pembalakan : Jangan tulis log ke fail kecuali perlu. Sebaliknya, biarkan aplikasi log ke stdout/stderr supaya Docker dapat menangkapnya secara langsung. Anda boleh melihat log menggunakan:
Docker Logs <Container_ID>
Jika anda mesti menulis log ke fail, pasangkan kelantangan untuk meneruskannya:
Docker Run -v ./logs:/var/log/myapp my-java-app
Ini membantu dengan debugging dan pemantauan tanpa kembung bekas anda.
Itulah pada dasarnya bagaimana Docker bekerja dengan Java. Ia mudah apabila anda mendapat asas -asas, tetapi terdapat banyak butiran kecil -seperti memilih imej asas yang betul atau mengoptimumkan binaan anda -yang boleh membuat perbezaan besar.
Atas ialah kandungan terperinci Bagaimana Docker berfungsi dengan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbezaan utama antara Docker dan virtualisasi tradisional terletak pada pemprosesan dan penggunaan sumber lapisan sistem operasi. 1. Bekas Docker berkongsi kernel OS host, yang lebih ringan, permulaan yang lebih cepat, dan lebih banyak kecekapan sumber; 2. Setiap contoh VM tradisional menjalankan OS penuh, menduduki lebih banyak ruang dan sumber; 3. Bekas biasanya bermula dalam beberapa saat, dan VM mungkin mengambil masa beberapa minit; 4. Bekas bergantung kepada ruang nama dan cgroup untuk mencapai pengasingan, manakala VM memperoleh pengasingan yang lebih kuat melalui perkakasan simulasi hypervisor; 5. Docker mempunyai mudah alih yang lebih baik, memastikan aplikasi berjalan secara konsisten dalam persekitaran yang berbeza, sesuai untuk microservices dan penyebaran persekitaran awan.

Untuk menyandarkan dan memulihkan jumlah Docker, anda perlu menggunakan bekas sementara bersempena dengan alat tar. 1. Semasa sandaran, jalankan bekas sementara yang memasang jumlah sasaran, gunakan arahan tar untuk membungkus data dan simpannya ke tuan rumah; 2. Semasa pemulihan, salin fail sandaran ke bekas yang melancarkan kelantangan dan mengurangkannya, perhatikan pemadanan jalan dan kemungkinan penindasan data; 3. Pelbagai jilid boleh ditulis secara automatik melalui setiap kelantangan; 4. Adalah disyorkan untuk beroperasi apabila bekas dihentikan untuk memastikan konsistensi data, dan kerap menguji proses pemulihan untuk mengesahkan kesahihan sandaran.

Untuk mendedahkan pelabuhan kontena Docker, tuan rumah perlu mengakses perkhidmatan kontena melalui pemetaan port. 1. Gunakan dockerrun-p [host_port]: [container_port] perintah untuk menjalankan bekas, seperti dockerrun-p8080: 3000my-web-app; 2. Gunakan arahan pendedahan untuk menandakan tujuan dalam Dockerfile, seperti Expose3000, tetapi pelabuhan tidak akan diterbitkan secara automatik; 3. Konfigurasi segmen pelabuhan fail YML dalam DockerCompose, seperti pelabuhan:-"8080: 3000"; 4. Gunakan dockerps untuk memeriksa sama ada peta pelabuhan dijana selepas berjalan.

Untuk melihat metadata imej Docker, perintah DockerInspect digunakan terutamanya. 1. Melaksanakan dockerInspect untuk mendapatkan maklumat metadata lengkap, termasuk ID, seni bina, ringkasan lapisan dan butiran konfigurasi; 2. Gunakan templat GO untuk memformat output, seperti dockerInspect-format = '{. Os}}/{{. Arsitektur}}' untuk memaparkan hanya sistem operasi dan seni bina; 3. Gunakan Dockerhistory untuk melihat setiap lapisan maklumat semasa proses pembinaan imej untuk membantu mengoptimumkan struktur imej; 4. Gunakan Skopeo Tool SkopeoinspectDocker: ///: untuk mendapatkan tanpa menarik imej lengkap.

Ketika cochoosingbetweennamedvolumesandbindmountsindocker, usenamedvolumesforcorcross-hostconsistency, reliabledatapersistence, anddocker-managedstorage, terutama sekali-sekala

Untuk mengakses perkhidmatan dalam bekas Docker dari tuan rumah, gunakan pemetaan port. Langkah-langkah khusus ialah: 1. Use -p untuk menentukan host_port: container_port Apabila memulakan bekas, seperti dockerrun-d-p8080: 80nginx; 2. Pelbagai pelabuhan boleh dikonfigurasi melalui parameter -parameter atau fail dockercompose; 3. Mengikat alamat IP boleh dibatasi, seperti -p192.168.1.100: 8080: 80; 4. Gunakan dockerps atau dockerInspect untuk melihat butiran pemetaan pelabuhan.

Topulladockerimage, usethedockerpullCommandfollowedbyTheimagenameandoptionaltag.first, verifyDockerInstalledWithDocker-ifnot, installit.next, UserPullubUndeToThelatSimageSriperPuluntu:

Docker menawarkan tiga jenis rangkaian utama: jambatan, tuan rumah, dan overlay. 1. Jambatan adalah pilihan lalai. Bekas dapat merealisasikan resolusi dan interoperabilitas DNS melalui rangkaian tersuai dan mendapatkan IP bebas, yang sesuai untuk persekitaran terpencil satu host; 2. Mod tuan rumah berkongsi stack rangkaian tuan rumah, tanpa pemetaan port, prestasi tinggi tetapi keselamatan yang rendah, sesuai untuk senario tertentu; 3. Overlay digunakan untuk komunikasi multi-tuan rumah, menyokong rangkaian kontena silang, dan mod swarm diperlukan. Apabila memilih, ia harus ditentukan berdasarkan keperluan seni bina dan keselamatan.
