Dockerfile adalah fail teks sederhana yang berisi semua perintah yang dapat dipanggil oleh pengguna pada baris perintah untuk memasang atau membangun gambar. Dengan bantuan docker build, anda dapat mengautomasikan build dengan mudah yang menjalankan banyak perintah yang ditentukan dalam file docker berturut-turut.
Sebagai contoh, anda ingin memuat turun gambar pelabuhan dari hab pelabuhan untuk keperluan pembangunan khusus anda. Kemudian, anda ingin mengemas kini gambar, memasang beberapa pakej untuk proses pembangunan anda. Dalam kes ini, anda boleh membuat file docker, memasukkan semua parameter untuk keperluan khusus anda, dan membina gambar tersuai anda. Setelah membuat file docker, anda dapat menggunakannya berulang kali untuk membina gambar yang sama tanpa memasang secara manual semua pakej yang diperlukan untuk proses pembangunan anda.
Asas Dockerfile
Sebelum bekerja dengan dockerfile jika penting untuk mengetahui cara membuat file dockerfile. Dockerfile merangkumi kata kunci tertentu yang dapat digunakan untuk membina gambar tertentu. Penjelasan ringkas mengenai semua kata kunci yang digunakan dalam file docker disenaraikan di bawah:
- DARI: Ini digunakan untuk menentukan gambar dasar, di mana kita akan membangun.
- TAMBAH: Ini digunakan untuk menambahkan fail ke bekas yang sedang dibina. Secara sederhana, RUN digunakan untuk menjalankan perintah dan melakukan hasilnya
- JALANKAN: Ini digunakan untuk menambahkan lapisan pada gambar dasar, dengan memasang komponen.
- CMD: Ini digunakan untuk menjalankan perintah pada awal wadah. Perintah ini dijalankan hanya apabila tidak ada argumen yang ditentukan semasa menjalankan wadah.
- ENTRYPOINT: Ini digunakan untuk menjalankan perintah selama proses inisialisasi wadah. Anda mesti menggunakan ENTRYPOINT di dokefile anda jika anda ingin memulakan bekas secara automatik setelah membina gambar.
- ENV: Ia digunakan untuk menentukan pemboleh ubah persekitaran dalam jangka masa kontena.
- PENDEDAHAN: Ini digunakan untuk menentukan port mendengar untuk mengaktifkan rangkaian pada waktu berjalan.
- PENYELENGGARA: Ia digunakan untuk menentukan nama dan id e-mel pencipta gambar.
- PENGGUNA: Ia digunakan untuk menentukan nama pengguna yang digunakan untuk menjalankan wadah.
- VOLUME: Ini digunakan untuk membenarkan akses dari kontena ke direktori di host Docker.
- WORKDIR: Ini digunakan untuk menentukan jalan perintah yang akan dijalankan pada waktu jalan.
- MAKMAL: Ia digunakan untuk menambahkan label pada gambar docker.
Membuat Dockerfile
Di bahagian ini, kami akan membuat file docker untuk membina imej pelayan LAMP dari gambar asas Ubuntu.
Pertama, anda perlu membuat direktori untuk menyimpan file dockerfile. Anda boleh membuatnya dengan arahan berikut:
LAMPU mkdirSeterusnya, buat direktori bernama Dockerfile di dalam direktori:
nano LAMP / DockerfileTambahkan baris berikut:
DARI ubuntu: terkiniMAINTAINER Hitesh Jethva
ENV DEBIAN_FRONTEND = tidak interaktif
Jalankan apt-get kemas kini -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "LATAR BELAKANG"]
PENDEDAHAN 8080
Simpan dan tutup fail apabila anda selesai.
Membina Imej dengan Dockerfile
Setelah membuat Dockerfile, anda boleh dengan mudah membuat gambar LAMP khas dengan bantuan Dockerfile.
Pertama, ubah direktori ke LAMP dan jalankan arahan berikut untuk membina gambar dari fail itu:
cd LAMPUdocker build -t "lampu: Dockerfile".
Perintah di atas akan mula memuat turun gambar terbaru Ubuntu dari Docker Hub dan memasang pakej yang diperlukan yang dinyatakan dalam Dockerfile. Setelah gambar berjaya dibina, anda akan melihat output berikut:
Menghantar konteks binaan ke Docker daemon 2.048kBLangkah 1/6: DARI ubuntu: terkini
terkini: Menarik dari perpustakaan / ubuntu
54ee1f796a1e: Tarik selesai
f7bfea53ad12: Tarik lengkap
46d371e02073: Tarik selesai
b66c17bbf772: Tarik selesai
Pencernaan: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Muat turun gambar baru untuk ubuntu: terkini
---> 4e2eef94cd6b
Langkah 2/6: MAINTAINER Hitesh Jethva
---> Berlari di 047977af2c2a
Mengeluarkan bekas perantaraan 047977af2c2a
---> 1331df625c4c
Langkah 3/6: ENV DEBIAN_FRONTEND = tidak interaktif
---> Berlari di 3597152c7a1b
Mengeluarkan bekas perantaraan 3597152c7a1b
---> 86c82c95e75d
Langkah 4/6: Jalankan apt-get kemas kini -y && apt-get pasang apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Mengeluarkan bekas perantaraan 322532299fd9
---> f6897a9554f7
Langkah 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Berlari pada tahun 669635bc8bcb
Mengeluarkan bekas perantaraan 669635bc8bcb
---> e8400eb2e677
Langkah 6/6: KECUALI 8080
---> Berlari di 937ae2b2d305
Mengeluarkan bekas perantaraan 937ae2b2d305
---> 2123a857361d
Berjaya dibina 2123a857361d
Lampu ditandai dengan berjaya: Dockerfile
Anda kini boleh menyenaraikan gambar yang baru dibina dengan menjalankan perintah berikut:
gambar dokAnda harus melihat output berikut:
ID GAMBAR TAG REPOSITORI SAIZ YANG DIBUATlampu Dockerfile 2123a857361d 44 saat yang lalu 520MB
ubuntu terkini 4e2eef94cd6b 8 hari yang lalu 73.9MB
Sekarang, anda mempunyai gambar pelayan LAMP tersuai di tangan anda. Anda juga dapat melihat sejarah setiap arahan dengan arahan berikut:
lampu sejarah docker: DockerfileAnda harus melihat output berikut:
GAMBAR DIPERBUAT DENGAN KOMEN SAIZ2123a857361d 16 minit yang lalu / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 16 minit yang lalu / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 minit yang lalu / bin / sh -c apt-get update -y && apt-get inst… 446MB
86c82c95e75d 17 minit yang lalu / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c 17 minit yang lalu / bin / sh -c # (nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b 8 hari yang lalu / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Membuat Container dari LAMP Image
Sekarang, anda boleh menjalankan wadah dari gambar anda menggunakan arahan berikut:
lampu lari -dit dok: DockerfileSetelah bekas dimulakan, anda akan melihat output berikut:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Anda boleh mengesahkan bekas yang sedang berjalan menggunakan arahan berikut:
dok dokAnda harus mendapat output berikut:
ID GAMBAR KANDUNGAN KOMAND NAMA PORTS STATUS YANG DIBUATlampu c14794784eb2: Dockerfile "apachectl -D FOREGR…" 2 minit yang lalu Naik 2 minit 0.0.0.0: 8080-> 8080 / tcp unik_ramanujan
Kesimpulannya
Dalam panduan ini, anda telah mengetahui apa itu Dockerfile dan bagaimana membina imej pelabuhan dengan Dockerfile. Ini sangat berguna untuk membuat gambar tersuai anda dan bukannya melakukan perubahan pada gambar yang ditarik.