GNU/Linux >> Belajar Linux >  >> Panels >> Docker

File Docker vs Docker Compose:Apa Perbedaannya?

Saya telah melihat banyak orang bingung antara file Dockerfile dan Compose. Ini terutama karena keduanya digunakan untuk memodifikasi gambar Docker dengan cara tertentu, meskipun secara teknis tidak benar.

Kedua istilah tersebut mudah membingungkan, tetapi Anda juga perlu memahami perbedaannya saat melakukan percakapan dengan rekan kerja atau (calon) atasan Anda.

Dockerfile digunakan untuk membuat image container, dan file Compose digunakan untuk men-deploy instance image tersebut sebagai container.

Biarkan saya menjelaskan sedikit detail agar Anda memahami dengan benar perbedaan antara Docker Compose dan Dockerfile.

Apa itu Dockerfile?

Saya suka menyebut Dockerfile sebagai pendahulu dari gambar kontainer. Anda membuat gambar dari Dockerfile. Dockerfile tipikal berisi instruksi build khusus, perintah seperti RUN , ADD , COPY , ENTRYPOINT , dll.

Ambil contoh di bawah ini:

FROM alpine:latest

RUN apk add --no-cache fortune

ENTRYPOINT ["fortune"]

Setiap baris dimulai dengan instruksi untuk komponen build. Instruksi ini tidak harus ditulis dengan huruf kapital. Berikut ini sama validnya dengan yang sebelumnya.

from alpine:latest

run apk add --no-cache fortune

entrypoint ["fortune"]

Dari Dockerfile ini, Anda sekarang dapat membuat image container (atau image buruh pelabuhan). Sebuah gambar hanyalah sebuah template untuk container yang sedang berjalan, yang terdiri dari beberapa lapisan read-only. Karena ini bukan artikel tentang gambar kontainer, saya akan menahan diri untuk tidak menjelaskan topik itu secara berlebihan.

Untuk membuat image dari Dockerfile ini, menggunakan docker CLI, jalankan perintah berikut

docker build -t fortune:alpine .

Ini akan membuat gambar dengan tag fortune:alpine . Saya belum akan membuat wadah dari gambar ini, itu untuk bagian selanjutnya.

Apa itu file Tulis?

File penulisan digunakan dalam dua jenis penerapan:dalam penerapan non-cluster dengan docker-compose dan penyebaran cluster dengan docker swarm .

Untuk membedakan kedua jenis tersebut, saya akan membahas file penulisan yang bertanggung jawab untuk penyebaran cluster sebagai file tumpukan. Saya akan berbicara tentang tumpukan file sebentar lagi.

File penulisan adalah bagian dari alat yang disebut docker-compose . Ini adalah aplikasi klien ke server daemon buruh pelabuhan, seperti docker klien CLI, tetapi alih-alih mengetik seluruh run perintah setiap saat, dengan docker-compose Anda dapat menggunakan kembali file YAML yang sama berulang kali, dan menyebarkan wadah yang sama dengan konfigurasi yang sama seperti yang Anda lakukan pertama kali.

Ini lebih mudah dibaca, lebih mudah dipelihara, lebih intuitif. Satu file penulisan dapat berisi beberapa konfigurasi penerapan container.

Dukungan penulisan file akan menjadi bagian dari klien buruh pelabuhan default yang ditulis dalam Go, sebagai argumen baris perintah, "pembuatan buruh pelabuhan". Perhatikan tanda hubung yang hilang di sana. Ini masih eksperimental, jadi dalam produksi menggunakan versi Python, yaitu docker-compose masih disarankan.

Mari kita ambil gambar sebelumnya, dan terapkan sebuah instance menggunakan file penulisan.

version: "3.3"

services:
    fortune:
        image: "fortune:alpine"

Simpan file sebagai docker-compose.yml . Sekarang jalankan di direktori yang sama dengan perintah berikut

docker-compose up

Anda tidak harus simpan file sebagai docker-compose.yml , Anda dapat menyimpannya sesuka Anda, tetapi jika bukan docker-compose.yml atau docker-compose.yaml , pastikan Anda menggunakan -f [FILENAME] pilihan.

docker-compose -f docker-compose.yml up

Tunggu dan lihat apa yang terjadi.

Untuk mengetahui apa itu fortune adalah, baca artikel ini tentang perintah Linux yang lucu.

12 Perintah Linux Lucu untuk Membumbui Terminal AndaBerikut adalah beberapa perintah Linux menyenangkan yang tidak berbahaya untuk menghibur kolega dan teman Anda. Mereka mungkin tampak tidak berguna tetapi mereka tetap menyenangkan. Ini FOSSCommunity

Apa itu file tumpukan?

File tumpukan identik dengan file penulisan dengan sintaks serupa dan sebagian besar opsi internal, dengan beberapa pengecualian. File tumpukan digunakan untuk menerapkan tumpukan layanan di swarm cluster.

Anda dapat menggunakan kembali file penulisan sebelumnya secara langsung sebagai file tumpukan.

Pertama, inisialisasi cluster.

docker swarm init

Kemudian jalankan perintah seperti berikut

docker stack deploy -c docker-compose.yml fortune

Jika di-deploy seperti ini, Anda perlu memeriksa output dengan melihat log layanan menggunakan docker service logs ... .

Menutup

File Docker dan Compose memiliki tujuan yang berbeda. Jika saya bisa membuat timeline, itu akan terlihat seperti ini

Dockerfile -> Docker Image -> Compose File -> Running Containers

Ada alasan lain mengapa pemula bingung dengan kedua file ini. Dockerfile dapat diarahkan melalui file Compose, dan kemudian Anda dapat menggunakan docker-compose untuk membangun citra.

Misalnya, Anda dapat menulis ulang file penulisan sebelumnya sehingga

version: "3.3"

services:
    fortune:
        build:
            context: '.'
            dockerfile: "./Dockerfile"
        image: "fortune:alpine"

Sekarang Anda dapat menjalankan docker-compose build untuk membangun citra. Atau Anda juga dapat menjalankan docker-compose up --build untuk membangun dan menjalankan container sekaligus.

Di sini, Dockerfile dilewatkan melalui file penulisan, dan dari tampilan pertama, sepertinya file penulisan yang bertanggung jawab untuk membangun gambar, tetapi tidak.

Docker Run vs Start vs Create:Perbedaan Dijelaskan Untuk pemula docker, istilah seperti docker start, docker run, dan docker create bisa membingungkan. Artikel ini menjelaskan perbedaannya dengan contoh. Buku Pegangan LinuxAbhishek Prakash

Saya harap artikel ini menjelaskan perbedaan antara file Dockerfile dan Compose. Jika Anda memiliki pertanyaan, beri tahu saya di bagian komentar di bawah.


Docker
  1. Linux vs. Unix:Apa bedanya?

  2. Apa Perbedaan Antara Kontainer LXC, LXD, dan Docker?

  3. Apa yang Baru di Docker Compose v2?

  1. Cara memperbarui/menambahkan file di Gambar Docker

  2. Apa tujuan dari file .bashrc di Linux?

  3. Apa perbedaan bagian dan segmen dalam format file ELF

  1. Server Ubuntu vs Desktop:Apa Perbedaannya?

  2. Apa perbedaan mengarahkan output menggunakan >, &>, >&dan 2&>?

  3. Apa perbedaan antara fsync dan syncfs?