


Bagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?
Mar 11, 2025 pm 04:32 PMBagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?
Membina aplikasi multi-kontainer dengan Docker mengarang Fail ini menentukan imej untuk digunakan untuk setiap perkhidmatan, pelabuhan untuk mendedahkan, jumlah untuk dipasang, dan konfigurasi rangkaian. Mari kita gambarkan dengan contoh mudah aplikasi web dengan pangkalan data yang berasingan:
Pertama, buat docker-compose.yml
fail:
<code class="yaml"> versi: & quot; 3.9 & quot; Perkhidmatan: Web: Build: Context: ./Web Dockerfile: Dockerfile Ports: - & quot; 8080: 80 & quot; bergantung_on: - db db: imej: postgres: 13 port: - & quot; 5432: 5432 & quot; Persekitaran: - Postgres_user = myuser - Postgres_password = mypassword </code>
Ini mentakrifkan dua perkhidmatan: web
dan db
. Perkhidmatan web
dibina dari dockerfile yang terletak di direktori ./ Web
. Ia mendedahkan port 8080 pada mesin tuan rumah, pemetaan ke port 80 dalam bekas. Secara kritis, Depends_on: - db
memastikan pangkalan data bermula sebelum aplikasi web. Perkhidmatan db
menggunakan imej PostgreSQL yang telah dibina dan mendedahkan port 5432. Ingat untuk membuat . <code> docker-compose.yml
dan laksanakan:
<code class="bash"> docker-compose up -d ---build </code> Bendera <code>-membina </code> membina imej perkhidmatan jika perlu. Anda kemudian boleh berhenti dan mengeluarkan bekas menggunakan: <pre class="brush:php;toolbar:false"> <code class="bash"> docker-compose down </code>
Ini menyediakan rangka asas. Aplikasi yang lebih kompleks mungkin melibatkan pelbagai perkhidmatan dengan kebergantungan dan konfigurasi yang rumit, yang memerlukan spesifikasi yang lebih terperinci dalam fail docker-ympose.yml
. Ingat untuk menguruskan pembolehubah persekitaran dengan selamat, berpotensi menggunakan .env
Fail atau Rahsia Penyelesaian pengurusan untuk persekitaran pengeluaran.
Apakah faedah utama menggunakan Docker yang dikarang untuk aplikasi multi-container? Aplikasi: - Penyebaran yang dipermudahkan: Satu
docker-compose.yml
Fail mentakrifkan keseluruhan infrastruktur aplikasi, membuat penggunaan dan replikasi langsung. Ini menghapuskan keperluan untuk menguruskan pelbagai arahan Docker secara individu. Ini mempercepat lelaran dan debugging. - Konsistensi persekitaran: Menggabungkan memastikan persekitaran yang konsisten merentasi sistem pembangunan dan pengeluaran yang berbeza. Ini meminimumkan percanggahan antara persekitaran, mengurangkan isu penempatan. Ini menjadikannya lebih mudah untuk diintegrasikan dengan alat orkestra seperti Kubernet di kemudian hari.
- Fail
docker-yml
berfungsi sebagai sumber kebenaran tunggal. Persediaan?
docker-compose.yml
Fail mentakrifkan keseluruhan infrastruktur aplikasi, membuat penggunaan dan replikasi langsung. Ini menghapuskan keperluan untuk menguruskan pelbagai arahan Docker secara individu. Ini mempercepat lelaran dan debugging. docker-yml
berfungsi sebagai sumber kebenaran tunggal. Persediaan? Komunikasi antara konainer dan perkongsian data
Docker mengarang memudahkan komunikasi antara kontainer dan perkongsian data melalui beberapa mekanisme:
- Bekas dalam rangkaian ini boleh berkomunikasi antara satu sama lain menggunakan nama perkhidmatan mereka. Sebagai contoh, dalam contoh kami di atas, bekas
web
boleh mengakses bekasdb
menggunakan hostnamedb
. Ini biasanya dilakukan melalui pembolehubah persekitaran atau fail konfigurasi dalam Kod Aplikasi. Pendekatan ini sesuai untuk konfigurasi mudah. ?? - Volum: Jilid docker menyediakan cara yang berterusan untuk berkongsi data antara bekas. Volum boleh ditakrifkan dalam fail
docker-yml
dan dipasang ke dalam pelbagai bekas. Ini sesuai untuk berkongsi fail konfigurasi, pangkalan data, atau data berterusan lain. Contohnya:
versi: & quot; 3.9 & quot; Perkhidmatan: Perkhidmatan: web: # ... jumlah: - sheared_data:/app/data db: # ... jumlah: - sheared_data:/var/lib/postgresql/volum data: sheared_data:
Perkhidmatan.
- Beratur mesej (misalnya, Rabbitmq, Kafka): Untuk komunikasi tak segerak, beratur mesej adalah penyelesaian yang mantap. Anda akan memasukkan perkhidmatan barisan mesej dalam
docker-yml
anda dan konfigurasikan aplikasi anda untuk berkomunikasi melalui.
Pilihan kaedah bergantung kepada keperluan khusus aplikasi anda. Untuk konfigurasi mudah, pembolehubah persekitaran atau komunikasi rangkaian langsung mungkin mencukupi. Untuk senario yang lebih kompleks yang melibatkan data yang berterusan atau komunikasi asynchronous, jilid dan beratur mesej lebih sesuai. Aplikasi yang dibina dengan Docker mengarang sering melibatkan secara sistematik memeriksa pelbagai aspek:
- Periksa
docker-compose.yml
File: Pastikan konfigurasi adalah betul, termasuk pemetaan pelabuhan, kebergantungan, volum, dan pembolehubah persekitaran. Typo tunggal boleh membawa kepada masalah yang signifikan. - Memeriksa log kontena: Gunakan
log-compose logs & lt; service_name & gt;
untuk melihat log bekas individu. Log sering mendedahkan punca kesilapan. - Periksa status kontena: Gunakan
Docker-komposisi PS
untuk menyemak status bekas anda. Kenal pasti mana -mana bekas yang tidak berjalan atau telah keluar dengan kod ralat. - Sahkan sambungan rangkaian: Pastikan bekas boleh berkomunikasi antara satu sama lain menggunakan
ping
atau alat diagnostik rangkaian lain dari dalam bekas menggunakan. berfungsi dengan betul. Keletihan sumber boleh membawa kepada tingkah laku yang tidak dijangka. - Mulakan semula kontena: Kadang -kadang, permulaan yang mudah dapat menyelesaikan masalah sementara. Gunakan
docker-compose restart & lt; service_name & gt;
ataudocker-compose up --build -d
. - -d .
- Mengasingkan masalah: Cuba menjalankan bekas secara individu untuk mengasingkan sumber masalah. Ini membantu menentukan sama ada isu ini khusus untuk satu bekas atau hasil daripada interaksi antara kolektif.
- Dengan Docker mengarang. Ingatlah untuk berunding dengan Docker rasmi mengarang dokumentasi untuk teknik penyelesaian masalah yang lebih maju.
Atas ialah kandungan terperinci Bagaimana untuk membina aplikasi multi-kontainer dengan Docker mengarang?. 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)

Topik panas

Untuk membuat pemacu rangkaian Docker tersuai, anda perlu menulis plugin Go yang melaksanakan NetworkDriverPlugin API dan berkomunikasi dengan Docker melalui Soket Unix. 1. Mula-mula memahami asas-asas pemalam Docker, dan pemacu rangkaian berjalan sebagai proses bebas; 2. Sediakan persekitaran pembangunan Go dan bina pelayan HTTP yang mendengar soket Unix; 3. Melaksanakan kaedah API yang diperlukan seperti plugin.aktivasi, getCapabilities, createnetwork, dan lain -lain dan mengembalikan respons JSON yang betul; 4. Daftar pemalam ke/run/docker/plugin/direktori dan lulus Dockernetwork

Ciri teras DockerCompose adalah untuk memulakan pelbagai bekas dalam satu klik dan secara automatik mengendalikan ketergantungan dan sambungan rangkaian di antara mereka. Ia mentakrifkan perkhidmatan, rangkaian, jilid dan sumber lain melalui fail YAML, menyedari orkestra perkhidmatan (1), secara automatik mewujudkan rangkaian dalaman untuk menjadikan perkhidmatan saling beroperasi (2), menyokong pengurusan jumlah data untuk meneruskan data (3), dan melaksanakan penggunaan semula dan pengasingan konfigurasi melalui profil yang berbeza (4). Sesuai untuk pembinaan persekitaran pembangunan tempatan (1), pengesahan awal seni bina mikroservis (2), persekitaran ujian dalam CI/CD (3), dan penempatan aplikasi kecil (4). Untuk memulakan, anda perlu memasang Docker dan pluginnya (1), buat direktori projek dan tuliskan Docker-Compose

Kubernet bukan pengganti Docker, tetapi langkah seterusnya dalam menguruskan bekas berskala besar. Docker digunakan untuk membina dan menjalankan bekas, manakala Kubernet digunakan untuk mengatur bekas ini merentasi pelbagai mesin. Khususnya: 1. 2. Kubernetes secara automatik menyebarkan, memperluaskan dan mengurus aplikasi kontena; 3. Ia menyedari orkestra kontena melalui komponen seperti nod, pod dan pesawat kawalan; 4. Kubernet bekerja dengan kerjasama Docker untuk memulakan semula bekas yang gagal secara automatik, mengembangkan permintaan, mengimbangi beban dan tiada kemas kini downtime; 5. Berkenaan dengan senario aplikasi yang memerlukan pengembangan pesat, menjalankan microservices, ketersediaan tinggi dan penempatan pelbagai alam sekitar.

Cara yang sama untuk membuat jumlah Docker adalah menggunakan perintah dockervolumecreate dan menentukan nama kelantangan. Langkah-langkah termasuk: 1. Buat jumlah yang dinamakan menggunakan dockervolume-createmy-volume; 2. Pasang kelantangan ke bekas melalui Dockerrun-Vmy-Volume:/Path/In/Container; 3. Sahkan kelantangan menggunakan dockervolumels dan jumlah yang tidak berguna dengan dockervolumePrune. Di samping itu, jumlah tanpa nama atau gunung mengikat boleh dipilih. Bekas secara automatik menjana ID oleh Docker, dan yang terakhir memaparkan direktori tuan rumah terus ke bekas. Perhatikan bahawa jumlah hanya sah di dalam negara, dan penyelesaian storan luaran diperlukan di seluruh nod.

Terdapat tiga cara biasa untuk menetapkan pembolehubah persekitaran dalam bekas Docker: Gunakan bendera -e, tentukan arahan ENV dalam fail docker, atau menguruskannya melalui dockercompose. 1. Menambah bendera -E apabila menggunakan Dockerrun boleh secara langsung lulus pembolehubah, yang sesuai untuk ujian sementara atau integrasi CI/CD; 2. Menggunakan Env dalam Dockerfile untuk menetapkan nilai lalai, yang sesuai untuk pembolehubah tetap yang tidak sering diubah, tetapi tidak sesuai untuk membezakan konfigurasi persekitaran yang berbeza; 3. Pilih kaedah yang betul mengikut keperluan projek atau gunakan pelbagai kaedah dalam kombinasi

Bekas Docker adalah cara yang ringan dan mudah alih untuk memasangkan aplikasi dan kebergantungan mereka bersama -sama untuk memastikan aplikasi berjalan secara konsisten dalam persekitaran yang berbeza. Contoh yang dijalankan berdasarkan imej membolehkan pemaju untuk memulakan program dengan cepat melalui "templat". Jalankan arahan Dockerrun yang biasa digunakan dalam bekas. Langkah -langkah khusus termasuk: 1. Pasang Docker; 2. Dapatkan atau bina cermin; 3. Gunakan arahan untuk memulakan bekas. Bekas berkongsi biji hos, lebih ringan dan lebih cepat untuk boot daripada mesin maya. Pemula mengesyorkan bermula dengan imej rasmi, menggunakan dockerps untuk melihat status berjalan, menggunakan dockerlogs untuk melihat log, dan kerap membersihkan sumber untuk mengoptimumkan prestasi.

Dockersystemrune adalah arahan untuk membersihkan sumber yang tidak digunakan yang memadam bekas yang dihentikan, rangkaian yang tidak digunakan, imej yang menggantung, dan membina cache. 1. Jalankan Dockersystemrune secara lalai untuk membersihkan cermin gantung dan meminta pengesahan; 2. Tambah parameter -f untuk melangkau pengesahan; 3. Gunakan -semua untuk memadam semua imej yang tidak digunakan; 4. Penggunaan -Filter untuk membersihkan cache mengikut masa; 5. Jalankan arahan ini secara teratur untuk membantu mengekalkan persekitaran yang bersih dan elakkan ruang cakera yang tidak mencukupi.

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.
