Perbedaan antara dockerfile dan docker-compose Mari kita pahami secara singkat proses penggunaan docker, yang dibagi menjadi pembuatan gambar dan startup kontainer.
Konstruksi gambar: yaitu, buat gambar yang berisi lingkungan, kode program, dll. yang diperlukan untuk instalasi dan pengoperasian. Proses pembuatan ini dilakukan menggunakan dockerfile.
Startup Kontainer: Kontainer akhirnya dijalankan dengan menarik gambar yang dibuat dan memulai layanan melalui serangkaian instruksi yang berjalan (seperti pemetaan port, pemasangan data eksternal, variabel lingkungan, dll.). Untuk satu kontainer, ini dapat dijalankan melalui docker run.
Jika melibatkan menjalankan beberapa kontainer (seperti orkestrasi layanan), itu dapat diimplementasikan melalui docker-compose, yang dapat dengan mudah menjalankan beberapa kontainer sebagai layanan (tentu saja, hanya satu) dan menyediakan fungsi skala (penskalaan layanan).
Ringkasan singkat:
1.dockerfile: membangun gambar;
2. Docker Run: Mulai kontainer;
3. docker-compose: Mulai layanan;
Mulailah dari awal. Jika Anda tidak menggunakan buruh pelabuhan, bagaimana Anda membangun wordpress? Temukan server terlebih dahulu, asumsikan OS-nya adalah Ubuntu, lalu ikuti dokumentasi langkah demi langkah untuk mengetikkan perintah dan menulis konfigurasinya, bukan? Bagaimana dengan menggunakan docker? Temukan saja server, apa pun sistem operasinya, selama mendukung buruh pelabuhan, buruh pelabuhan menjalankan ubuntu, buruh pelabuhan akan menarik gambar Ubuntu terbaru dari sumber resmi, Anda dapat memikirkannya saat Anda membuka mesin virtual Ubuntu, dan kemudian menginstalnya selangkah demi selangkah, seperti di atas.
Namun, instalasi ini memiliki kelemahan yang signifikan: setelah kontainer dihapus, Anda tidak memiliki pekerjaan apa pun yang dilakukan. Tentu saja, Anda dapat menggunakan docker commit untuk menyimpannya sebagai gambar, sehingga dapat digunakan kembali.
Tetapi gambarnya umumnya besar, dan jika Anda hanya membagikan gambar, orang lain tidak akan tahu apa yang terkandung dalam gambar Anda, yang tidak kondusif untuk dibagikan dan digunakan kembali. Solusi intuitif adalah menulis skrip untuk merekam seluruh proses instalasi, sehingga ketika Anda menginstalnya lagi, Anda dapat menjalankan skrip. Dockerfile adalah salah satu skrip yang mendokumentasikan proses pembuatan gambar. Dengan Dockerfile, cukup jalankan docker build . Anda dapat membuat gambar, dan Dockerfile adalah file teks, yang sangat mudah dimodifikasi.
Sekarang setelah Anda memiliki gambar WordPress, Anda hanya perlu berlari buruh pelabuhan untuk mengaktifkan dan menjalankan WordPress.
Jika hanya WordPress, itu sudah cukup. Namun sering kali, beberapa gambar diperlukan untuk memulai layanan, seperti nginx, mysql, mail service, dll. Lebih umum, nginx, mysql, dan smtp semuanya adalah gambar, dan kemudian gambar-gambar ini bekerja sama untuk melayani proyek. Docker-Compose adalah solusi untuk masalah ini. Informasi tentang gambar mana yang dibutuhkan proyek Anda, cara mengonfigurasi setiap gambar, volume mana yang akan dipasang, dan sebagainya disertakan dalam docker-compose.yml. Untuk memulai layanan, Anda hanya perlu docker-compose up, dan Anda hanya perlu docker-compse stop/down untuk menghentikannya
Singkatnya, Dockerfile merekam proses konstruksi satu gambar, docker-compse.yml mencatat proses konstruksi proyek (biasanya beberapa gambar).
Anda mengatakan bahwa beberapa tutorial menggunakan dockerfile+docker-compose karena docker-compose.yml sendiri tidak memiliki informasi tentang build image, dan jika gambar ditarik dari registri docker, maka dockerfile tidak diperlukan; Jika gambar perlu dibangun, maka Dockerfile perlu disediakan.
buruh pelabuhanIni adalah wadah orkestrasi. Misalnya, Anda memiliki gambar php, gambar mysql, dan gambar nginx. Jika tidak ada docker-compose, maka setiap kali Anda memulai, Anda perlu mengetikkan parameter startup dari setiap kontainer, variabel lingkungan, nama kontainer, menentukan parameter tautan dari kontainer yang berbeda, dan serangkaian operasi, yang cukup rumit. Setelah menggunakan docker-composer, Anda dapat menulis perintah ini dalam file docker-composer.yml sekaligus, dan setiap kali Anda memulai seluruh lingkungan (termasuk 3 kontainer), Anda hanya perlu mengetikkan perintah docker-composer up.
file buruh pelabuhanPerannya adalah membangun citra cermin dari awal. Ini berisi lingkungan, kode program, dll. yang diperlukan untuk instalasi dan pengoperasian. Proses pembuatan ini dilakukan menggunakan dockerfile. Dockerfile - Disiapkan untuk perintah docker build untuk membuat gambar mandiri, yang juga dapat digunakan dalam docker-compose untuk live build docker-compose.yml - Skrip untuk docker-compose yang dapat mengelola beberapa kontainer secara bersamaan, termasuk hubungan di antara mereka, apakah akan membangun dengan gambar resmi atau diri Anda sendiri, berbagai definisi port jaringan, definisi ruang penyimpanan, dll |