Panduan ini akan menulis Dockerfile yang membimbing Docker untuk memilih Linux (imej asas) yang diminimumkan untuk aplikasi yang akan kami sampaikan, dan dilengkapi dengan toolset dan konfigurasi khusus kami untuk membina pengedaran Linux kami dengan berkesan, pengedaran ini betul -betul betul
Sesuai untuk menjalankan aplikasi kami.
mata utama
Docker melaksanakan teknologi kontena perisian menjadikannya mungkin. Walaupun saya tidak akan pergi ke butiran di belakangnya di sini, anda boleh membaca lebih lanjut mengenai Docker, apa bekas perisian dan bagaimana mereka bekerja dalam memahami Docker, bekas, dan penghantaran perisian yang lebih selamat.
Sebelum anda memulakan, anda perlu memasang Docker, sama ada pada mesin tempatan atau pada pelayan jauh.
Nasib baik, versi terkini Docker (versi 1.12 sebagai penulisan ini) menjadikan proses pemasangan sangat lancar, dan anda boleh mendapatkan panduan yang mudah dan mudah difahami untuk Windows, MacOS, dan Linux.
Untuk membina imej di Docker, anda perlu menetapkan arahan untuk membina dan konteks dalam fail teks biasa yang dipanggil DockerFile (lebih banyak lagi kemudian). Fail ini mempunyai sintaks yang serupa dengan fail konfigurasi Apache -satu arahan setiap baris dan parameter yang sepadan, semua arahan diproses dalam urutan. Komen bermula dengan # aksara dan ruang. Akhirnya, sebaik sahaja anda mempunyai Dockerfile, pembentukan Docker Command akan membina imej, yang akan kami tutup dengan lebih terperinci kemudian.
Sebelum kita mula menulis Dockerfile, kita akan menubuhkan ruang kerja. Kami akan membuat direktori yang dipanggil my_image di direktori rumah, menggunakannya sebagai direktori kerja kami, dan meletakkan fail docker di dalamnya:
mkdir ~/my_build cd ~/my_build touch Dockerfile
Sekarang kita sudah bersedia untuk mula membina imej.
Apabila membuat imej, dalam kebanyakan kes anda akan menggunakan satu titik permulaan -i.e. Ini boleh menjadi Ubuntu, MySQL, WordPress, atau imej lain yang terdapat di Docker Hub. Anda juga boleh menggunakan imej yang anda buat sebelum ini.
NOTA : Anda boleh membuat imej asas anda sendiri menggunakan imej minimum Docker (dipanggil Scratch) yang mengandungi alat teras dan struktur direktori anda sendiri. Saya tidak akan meliputi proses ini di sini, tetapi anda boleh merujuk kepada panduan untuk membuat imej asas di laman web Docker.
Sebagai contoh, jika anda ingin memulakan dengan pengedaran Debian yang diminimumkan, anda akan menambah yang berikut ke Dockerfile anda:
# 设置基础镜像 FROM debian
dari mestilah arahan pertama yang anda gunakan semasa menulis fail docker. Ambil perhatian bahawa anda juga boleh menggunakan versi tertentu imej asas dengan menambahkan: dan versi_name pada akhir nama imej. Contohnya:
# 设置基础镜像 FROM debian:sid
Tentukan penyelenggara dan tambahkan metadata
# 作者 MAINTAINER Lucero del Alba
# 额外的元数据 LABEL version="1.0" LABEL description="First image with Dockerfile."
Buat pengedaran anda sendiri
Pada ketika ini, kami akan memilih beberapa alat dan perpustakaan untuk dimasukkan ke dalam cermin supaya bekas kami mempunyai segala yang kami perlukan untuk melakukan tindakan yang diharapkan. Pada akhir tutorial ini, kami akan melakukan pekerjaan yang sangat dekat dengan sebenarnya membina taburan Linux.
Beberapa bekas (seperti yang menjalankan pangkalan data PostgreSQL) direka untuk dijalankan di latar belakang. Walau bagaimanapun, kami sering memerlukan konsol untuk melakukan operasi tertentu pada bekas, jadi kami mungkin memerlukan beberapa alat tambahan kerana imej yang mendasari hanya akan membungkus alat GNU minimum.
Anda pasti akan mempunyai masalah caching apabila cuba memasang pakej tambahan pada imej anda. Ini kerana imej yang mendasari telah cache metadata dan repositori masa nyata dari mana anda mengekstrak data dengan kerap.
Dalam pengedaran berasaskan debian, anda boleh menambah arahan berikut sebelum memasang pakej baru untuk mengendalikan ini:
mkdir ~/my_build cd ~/my_build touch Dockerfile
alat seperti editor kod, locale, git atau tmux - kini adalah masa untuk memasang semua yang anda perlukan selepas itu supaya mereka dibundel dalam imej.
kami akan memasang satu setiap baris:
# 设置基础镜像 FROM debian
kita boleh memasang semua ini dalam satu baris, tetapi jika kita mahu menambah atau mengeluarkan pakej kemudian, kita perlu mengubah keseluruhan proses. Jadi amalan terbaik di sini adalah untuk memasang satu pakej setiap baris supaya anda boleh mendapat manfaat daripada cache Docker.
Di samping itu, pastikan ia mudah. Anda tidak mahu memasang alat "hanya dalam kes" kerana ini boleh meningkatkan masa membina dan saiz imej.
kami juga akan menyampaikan permohonan kami dalam imej ini. Adakah anda memerlukan versi tertentu PHP, Ruby atau Python, dan beberapa modul? Sekarang adalah masa untuk menyampaikan semua program dan runtimes yang diperlukan untuk menyampaikan permohonan.
anda boleh menentukan seperti yang anda suka, kerana bekas ini direka untuk menjalankan aplikasi anda sahaja:
Dalam contoh ini, kami akan memasang Python 3 bersama -sama dengan PsyCOPG 2 (untuk menyambung ke pangkalan data PostgreSQL), modul misai Python, dan modul YAML. (Apabila anda membuat Dockerfile anda sendiri, anda secara semula jadi akan memasang kebergantungan khusus yang anda perlukan.)# 设置基础镜像 FROM debian:sid
Pakej kompilasi dan muat turun
Anda juga boleh skrip fail ini pada fail yang berasingan, tambahkan fail ini ke membina dan menjalankannya, yang akan kita lihat dalam penyampaian bahagian permohonan anda sendiri.
Pembersihan
Juga, sila ambil perhatian bahawa kami menggunakan apt-get kerana kami memilih Debian, tetapi sila gunakan arahan yang sepadan untuk pengedaran imej asas.
# 作者 MAINTAINER Lucero del Alba
Tujuan untuk membina persekitaran ini adalah untuk membolehkan anda menyampaikan aplikasi anda dengan lancar dan bersiap sedia untuk dijalankan. Untuk menambah kandungan fail, direktori, dan juga URL jauh ke imej, kami akan menggunakan Arahan Tambah.
Dengan mengandaikan menggunakan aplikasi dan semua yang kami mahu masukkan ke dalam imej, kami mempunyai fail berikut dalam ~/my_build (di mana app.py dan lib.py berada dalam aplikasi subdirektori/):
mkdir ~/my_build cd ~/my_build touch Dockerfile
Kami menambah skrip .bashrc dan .profile ke direktori / root dalam bekas supaya mereka melaksanakan apabila kita memulakan shell pada bekas dan menyalin kandungan app / ke / app / direktori dalam bekas.
kami menambah arahan berikut:
# 设置基础镜像 FROM debian
Akhirnya, kami akan menetapkan beberapa pembolehubah persekitaran yang diperlukan pada tahap sistem dan aplikasi.
Ramai di antara kamu menggunakan watak Debian lalai yang ditetapkan untuk melakukannya, tetapi kerana kita mensasarkan penonton antarabangsa, mari kita lihat bagaimana untuk memiliki terminal UTF-8. Kami memasang pakej tempatan sebelum ini, jadi sekarang yang perlu kita lakukan ialah menjana set aksara dan menubuhkan persekitaran Linux yang sesuai:
# 设置基础镜像 FROM debian:sid
Anda juga mungkin perlu menetapkan beberapa pembolehubah persekitaran untuk aplikasi untuk menukar kata laluan dan laluan. DockerFile memberikan arahan env untuk melakukan ini dengan tepat:
# 作者 MAINTAINER Lucero del Alba
Perhatikan bahawa anda juga boleh lulus pembolehubah persekitaran dari baris arahan apabila memulakan bekas, yang mungkin mudah untuk berkongsi beberapa maklumat sensitif (seperti kata laluan).
Sudah tentu, anda perlu menyesuaikan fail Docker seperti yang anda mahukan, tetapi semoga anda memahami kemungkinannya.
ini adalah fail lengkap:
# 额外的元数据 LABEL version="1.0" LABEL description="First image with Dockerfile."
Dari dalam direktori my_build, kami akan menggunakan perintah membina docker, lulus bendera -t untuk "tag" imej baru dengan nama, dalam hal ini my_image. .
# 更新源列表 RUN apt-get clean RUN apt-get update
# 每行安装一个基本应用程序,以获得更好的缓存 RUN apt-get install -qy git RUN apt-get install -qy locales RUN apt-get install -qy nano RUN apt-get install -qy tmux RUN apt-get install -qy wget
# 安装应用程序运行时和模块 RUN apt-get install -qy python3 RUN apt-get install -qy python3-psycopg2 RUN apt-get install -qy python3-pystache RUN apt-get install -qy python3-yaml
# 清理 RUN apt-get -qy autoremove
Mulakan bekas
<code>.bashrc .profile app/app.py app/lib.py Dockerfile</code>
kami akan memperkenalkannya dalam artikel masa depan. Pada masa ini, anda mungkin ingin menyemak sumber -sumber berikut.
dari laman web Docker:
Bagaimana untuk mengoptimumkan proses binaan menggunakan Dockerfile?
Apakah amalan terbaik untuk menulis dockerfiles?
bagaimana debug dockerfile?
Bolehkah saya menggunakan pembolehubah persekitaran dalam dockerfile?
bagaimana untuk menyalin fail dari hos ke imej docker?
Bagaimana untuk mendedahkan port dalam imej docker?
Bagaimana untuk menyediakan direktori kerja dalam imej docker?
Bagaimana untuk menjalankan arahan dalam imej Docker?
Anda boleh menggunakan Arahan CMD untuk memberikan nilai lalai untuk bekas pelaksanaan. Ini termasuk fail yang boleh dilaksanakan, atau fail yang boleh dieksekusi boleh ditinggalkan, dalam hal ini anda mesti menentukan Arahan EntryPoint.
Output yang disemak semula ini mengekalkan pemformatan imej asal dan mengelakkan perubahan ketara kepada makna artikel semasa menyusun semula ayat dan perenggan untuk keaslian.
Atas ialah kandungan terperinci Cara Membina Gambar Dengan Dockerfile. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!