Dockerfile adalah file teks instruksi yang digunakan untuk mengotomatisasi instalasi dan konfigurasi image aDocker. Dockerfiles memudahkan untuk menyebarkan beberapa wadah Docker tanpa harus mempertahankan gambar yang sama di beberapa mesin virtual. Instruksi dieksekusi dalam urutan yang muncul di Dockerfile, yang membuat penggunaan dan pembaruannya menjadi jelas dan intuitif. Artikel ini membahas dasar-dasar, dengan contoh, cara kerja Dockerfile.
Sebelum Anda Mulai
-
Biasakan diri Anda dengan panduan Memulai kami, buat dan perbarui Linode, dan instal Docker. Atau, Anda dapat dengan cepat menerapkan Linode yang telah diperbarui dan mendukung Docker dengan Aplikasi Docker Marketplace.
-
Pastikan Linode Anda aman dengan mengikuti panduan kami tentang Menyiapkan dan Mengamankan Instans Komputasi.
-
Panduan ini mengasumsikan Anda nyaman menggunakan antarmuka baris perintah (CLI) Docker. Untuk mempelajari lebih lanjut tentang CLI Docker, lihat dokumentasinya.
Bagaimana Cara Kerja Dockerfile?
Dockerfile adalah skrip yang menjalankan perintah dan tindakan berbeda untuk membangun image Docker, yang kemudian dapat digunakan untuk men-deploy container Docker. Perintah dan informasi dalam Dockerfile dapat dikonfigurasi untuk menggunakan versi dan dependensi perangkat lunak tertentu untuk penerapan yang stabil. Anda juga dapat menggunakan registri aDocker untuk menyimpan dan mengakses image Docker publik (atau pribadi).
Setelah Dockerfile ditulis, Anda dapat menggunakan docker build
perintah untuk menghasilkan gambar Docker berdasarkan instruksi Dockerfile. Kemudian, Anda dapat menerapkan wadah berdasarkan gambar dengan perintah seperti docker run
atau docker create
.
Berikut adalah petunjuk umum yang dapat Anda gunakan di Dockerfiles Anda untuk membuat gambar:
Definisi Dasar
- DARI :Tentukan gambar dasar, seperti
ubuntu
ataudebian
, digunakan untuk memulai proses pembuatan. Diperlukan untuk setiap Dockerfile. - PENGELOLA :Tentukan nama lengkap dan alamat email pembuat gambar.
Variabel
- ENV :Menyetel variabel lingkungan yang bertahan saat penampung disebarkan.
- ARG :Tetapkan variabel waktu pembuatan yang lumayan. Dapat digunakan sebagai alternatif untuk
ENV
untuk membuat variabel yang tidak bertahan saat container di-deploy dari image.
Eksekusi Perintah
- JALANKAN :Jalankan perintah, seperti perintah penginstalan paket, pada lapisan gambar baru.
- CMD :Jalankan perintah tertentu dalam wadah yang disebarkan dengan gambar, atau setel parameter default untuk
ENTRYPOINT
petunjuk. Hanya satu yang digunakan per Dockerfile. - ENTRYPOINT :Menyetel aplikasi default untuk digunakan setiap kali container di-deploy dengan image. Hanya satu yang digunakan per Dockerfile.
- USER :Mengatur UID (nama pengguna) untuk menjalankan perintah di wadah.
- DIREKTUR KERJA :Setel jalur penampung tempat perintah Dockerfile berikutnya dijalankan.
CatatanRUN
,CMD
, danENTRYPOINT
masing-masing dapat dijalankan di shell form, yang mengambil argumen normal, atau exec form, yang mengambil argumen sebagai larik JSON. Karena exec form tidak memanggil shell perintah, umumnya lebih disukai dan digunakan dalam panduan ini.
Pengelolaan Data
- TAMBAHKAN :Menyalin file dari sumber ke sistem file gambar di tujuan yang ditetapkan dengan tarball otomatis dan penanganan URL jarak jauh.
- SALIN :Mirip dengan
ADD
tetapi tanpa tarball otomatis dan penanganan URL jarak jauh. - VOLUME :Mengaktifkan akses dari titik pemasangan yang ditentukan dalam wadah ke direktori pada mesin host.
Jaringan
- EKSPOSE :Mengekspos port tertentu untuk mengaktifkan jaringan antara container dan dunia luar.
Selanjutnya, kita akan membuat contoh Dockerfile yang menggunakan beberapa perintah ini.
Membuat Dockerfile
Untuk membuat Dockerfile:
-
Pada prompt perintah (baik melalui SSH atau Lish di Linode Manager), buat dan ubah ke direktori baru:
mkdir ~/mydockerbuild && cd ~/mydockerbuild
Catatan Ini menempatkan direktori build Docker di direktori home Anda. Sebagai praktik yang baik, jangan simpan Dockerfile di direktori home Anda sendiri atau direktori root server. Sebagai gantinya, buat direktori terpisah dan tempatkan semua file yang diperlukan di dalamnya (bersama Dockerfile) seperti yang ditunjukkan dalam panduan ini.
-
Buat contoh Dockerfile:
touch example_dockerfile
-
Buka Dockerfile menggunakan editor teks pilihan Anda (untuk contoh ini, kami menggunakan nano):
nano example_dockerfile
-
Salin contoh berikut ke Dockerfile Anda. Ini membuat Dockerfile yang menghasilkan gambar Debian, mengatur informasi pengelola, dan hanya mengembalikan "Halo, Sunshine!" saat dijalankan:
- File:example_dockerfile
1 2 3
FROM debian MAINTAINER Jane Doe [email protected] CMD ["echo", "Hello, Sunshine!"]
-
Simpan file Docker.
-
Masukkan
cat example_dockerfile
dan pastikan teks dari atas disertakan.
Membuat Gambar Docker dari Dockerfile
Bangun image dari Dockerfile menggunakan docker build
perintah:
docker build ~/mydockerbuild -f example_dockerfile -t example_image
Memberi label pada gambar Anda dengan example_image
membuatnya lebih mudah untuk men-deploy container di langkah berikutnya.
Outputnya akan terlihat seperti ini:
Sending build context to Docker daemon 4.096kB
Step 1/3 : FROM debian
---> 4a7a1f401734
Step 2/3 : MAINTAINER Jane Doe [email protected]
---> Running in fdd81bd8b5c6
Removing intermediate container fdd81bd8b5c6
---> 1253842068a3
Step 3/3 : CMD ["echo", "Hello, Sunshine!"]
---> Running in d33e1bacf1af
Removing intermediate container d33e1bacf1af
---> a5d95e138b97
Successfully built a5d95e138b97
Successfully tagged example_image:latest
Seperti yang Anda lihat, instruksi dari example_dockerfile
dieksekusi secara berurutan. Gambar berlabel example_image
sekarang siap dijalankan untuk men-deploy container.
Menjalankan Gambar Docker Anda untuk Men-deploy Container
Menjalankan image yang baru saja Anda buat untuk men-deploy container Docker kini semudah memasukkan yang berikut:
docker run example_image
Wadah baru berdasarkan example_image
dikerahkan, dan perintah yang ditentukan dalam CMD
instruksi kemudian dieksekusi dari wadah dengan output berikut:
Hello, Sunshine!
Catatan Jika docker run
perintah dijalankan dan image Docker tidak tersedia di direktori kerja Anda saat ini, melainkan diambil dari registri Docker.
Bacaan Lebih Lanjut
Selamat! Anda telah membuat Dockerfile pertama Anda dan menjalankan image Docker pertama Anda.
Untuk contoh dan informasi lebih lanjut tentang penggunaan Dockerfiles dengan image dan container Docker, lihat:
-
panduan kami tentangCara Menggunakan Gambar Docker, Wadah, dan File Docker Secara Mendalam;
-
Praktik Terbaik Dockerfile Docker.
Informasi Lebih Lanjut
Anda mungkin ingin berkonsultasi dengan sumber daya berikut untuk informasi tambahan tentang topik ini. Meskipun ini disediakan dengan harapan dapat bermanfaat, harap perhatikan bahwa kami tidak dapat menjamin keakuratan atau ketepatan waktu materi yang dihosting secara eksternal.
- Praktik Terbaik untuk Menulis File Docker
- Gambar Resmi Docker di Docker Hub
- Dokumen Docker