Android

Bagaimana membina imej docker dengan fail docker

Belajar Docker untuk Pemula - 15 Membuat Image dengan Dockerfile

Belajar Docker untuk Pemula - 15 Membuat Image dengan Dockerfile

Isi kandungan:

Anonim

Imej Docker adalah cetak biru kontainer Docker yang mengandungi aplikasi dan semua yang anda perlukan untuk menjalankan aplikasi. Sebuah bekas ialah contoh runtime imej.

Dalam tutorial ini, kami akan menerangkan apa Dockerfile, cara membuatnya, dan bagaimana membina imej Docker dengan Dockerfile.

Apa itu Dockerfile

A Dockerfile adalah fail teks yang mengandungi semua perintah pengguna boleh menjalankan pada baris perintah untuk membuat imej. Ia termasuk semua arahan yang diperlukan oleh Docker untuk membina imej.

Imej docker terdiri daripada satu siri lapisan sistem fail yang mewakili arahan dalam Dockerfile imej yang membentuk aplikasi perisian yang dapat dijalankan.

Fail Docker mengambil bentuk berikut:

# Comment INSTRUCTION arguments

INSTRUCTION tidak sensitif kepada kes, tetapi konvensyen itu menggunakan UPPERCASE untuk namanya.

Di bawah adalah senarai dengan penerangan ringkas beberapa arahan Dockerfile yang paling banyak digunakan:

  • ARG - Arahan ini membolehkan anda untuk menentukan pembolehubah yang boleh diluluskan pada waktu bina. Anda juga boleh menetapkan nilai lalai. FROM - Imej asas untuk membina imej baru. Arahan ini mestilah arahan bukan komen yang pertama dalam Dockerfile. Satu-satunya pengecualian dari peraturan ini adalah apabila anda hendak menggunakan pembolehubah dalam hujah FROM . Dalam kes ini, FROM boleh didahului oleh satu atau lebih arahan ARG . LABEL - Digunakan untuk menambah metadata pada imej, seperti penerangan, versi, pengarang..tetap. Anda boleh menentukan lebih daripada satu LABEL , dan setiap arahan LABEL adalah pasangan kunci. RUN - Perintah yang dinyatakan dalam arahan ini akan dilaksanakan semasa proses pembina. Setiap arahan RUN mewujudkan lapisan baru di atas imej semasa. TAMBAH - Digunakan untuk menyalin fail dan direktori dari sumber yang ditentukan ke destinasi yang ditentukan pada imej dok. Sumbernya boleh menjadi fail atau direktori setempat atau URL. Jika sumber adalah arkib tar tempatan, maka ia secara automatik dibongkar ke dalam imej Docker. COPY - Sama seperti ADD tetapi sumber hanya boleh menjadi fail atau direktori setempat. ENV - Arahan ini membolehkan anda menentukan pembolehubah persekitaran. CMD - Digunakan untuk menentukan arahan yang akan dilaksanakan apabila anda menjalankan bekas. Anda hanya boleh menggunakan satu arahan CMD dalam Dockerfile anda. ENTRYPOINT - Sama seperti CMD , arahan ini menentukan arahan apa yang akan dilaksanakan apabila menjalankan sebuah bekas. WORKDIR - Arahan ini menetapkan direktori kerja semasa untuk arahan RUN , CMD , ENTRYPOINT , COPY , dan ADD . USER - Tetapkan nama pengguna atau UID untuk digunakan apabila menjalankan sebarang RUN , CMD , ENTRYPOINT , COPY dan arahan ADD . VOLUME - Membolehkan anda melancarkan direktori mesin tuan rumah kepada bekas. EXPOSE - Digunakan untuk menentukan port di mana kontainer mendengar pada masa runtuh.

Untuk, tidak termasuk fail dan direktori daripada ditambahkan ke imej, buat fail .dockerignore dalam direktori konteks. Sintaks bagi .dockerignore serupa dengan salah satu fail .gitignore Git.

Untuk rujukan lengkap dan penjelasan terperinci mengenai arahan Dockerfile lihat halaman rujukan Dockerfile resmi.

Buat fail Docker

Senario paling biasa apabila membuat imej Docker adalah untuk menarik imej yang sedia ada dari registri (biasanya dari Docker Hub) dan nyatakan perubahan yang anda ingin buat pada imej asas. Imej asas yang paling biasa digunakan apabila membuat imej Docker adalah Alpine kerana ia kecil dan dioptimumkan untuk dijalankan dalam RAM.

Hab Docker adalah perkhidmatan pendaftar berasaskan awan yang antara fungsi lain digunakan untuk menyimpan imej Docker sama ada dalam repositori awam atau swasta.

Dalam contoh ini, kami akan membuat imej Docker untuk pelayan Redis. Kami akan menggunakan ubuntu terbaru 18.04 sebagai imej asas.

Pertama, buat direktori yang akan mengandungi Dockerfile dan semua fail yang diperlukan:

mkdir ~/redis_docker

Navigasi ke direktori dan buat fail Docker yang berikut:

cd ~/redis_docker nano Dockerfile Dockerfile

FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y redis-server && \ apt-get clean EXPOSE 6379 CMD

Mari kita jelaskan makna setiap baris dalam Dockerfile:

  • Dalam baris 1 kami menentukan imej asas. Arahan RUN yang bermula dalam baris 3 akan mengemas kini indeks apt, pasang pakej "redis-server" dan bersihkan cache apt. Arahan digunakan dalam arahan adalah sama seperti arahan yang anda akan gunakan untuk memasang Redis pada Ubuntu server.The EXPOSE arahan mentakrifkan port di mana pelayan Redis yang listens.In barisan terakhir, kami menggunakan CMD arahan untuk menetapkan arahan lalai yang akan dilaksanakan apabila bekas itu berjalan.

Simpan fail dan tutup editor.

Membina Imej

Langkah seterusnya ialah membina imej. Untuk berbuat demikian jalankan arahan berikut dari direktori di mana fail Docker terletak:

docker build -t linuxize/redis.

Opsyen -t menentukan nama imej dan opsyenal nama pengguna dan tag dalam format 'username / imagename: tag'.

Output proses binaan akan kelihatan seperti ini:

Sending build context to Docker daemon 3.584kB Step 1/4: FROM ubuntu:18.04 ---> 7698f282e524 Step 2/4: RUN apt-get update && apt-get install -y gosu redis-server && apt-get clean ---> Running in e80d4dd69263… Removing intermediate container e80d4dd69263 ---> e19fb7653fca Step 3/4: EXPOSE 6379 ---> Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc ---> 13b92565c201 Step 4/4: CMD ---> Running in a67ec50c7048 Removing intermediate container a67ec50c7048 ---> d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest

Apabila proses binaan selesai, imej baru akan disenaraikan dalam senarai imej:

docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MB

Running a Container

Sekarang imej dicipta anda menjalankan bekas daripadanya dengan berjalan:

docker run -d -p 6379:6379 --name redis linuxize/redis

Opsyen -d memberitahu Docker untuk menjalankan kontena dalam mod berasingan, pilihan -p 6379:6379 akan menerbitkan port 6379 ke mesin tuan rumah dan pilihan --name redis menentukan nama kontena. Argumen terkini linuxize/redis adalah nama imej, yang digunakan untuk menjalankan bekas.

Apabila bekas dimulakan, gunakan arahan berikut untuk menyenaraikan semua bekas yang sedang berjalan:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 "redis-server '--pro…" 5 minutes ago Up 5 minutes 0.0.0.0:6379->6379/tcp redis

Untuk mengesahkan bahawa segala-galanya berfungsi kerana ia harus menggunakan redis-cli untuk menyambung ke bekas penampung:

redis-cli ping

Pelayan redis harus bertindak balas dengan PONG .

Kesimpulannya

Tutorial ini hanya meliputi asas menggunakan Dockerfiles untuk membina imej. Untuk mengetahui lebih lanjut mengenai cara menulis Dockerfiles dan amalan terbaik yang disarankan lihat Amalan terbaik untuk menulis Dockerfiles.

docker