Docker

Panduan Pemula Untuk Mengarang Docker

Panduan Pemula Untuk Mengarang Docker
Docker Compose adalah salah satu alat yang paling berguna untuk Pembangun Perisian dan Pentadbir Sistem. Banyak pekerjaan memerlukan seseorang yang mempunyai pengetahuan mengenai teknologi ini, jadi Docker dan Docker Compose sangat panas di ruang DevOps. Tanpa ragu, mengetahui bagaimana menggunakan teknologi ini akan memberi manfaat kepada kerjaya IT anda.

Sekiranya anda seorang pemula untuk Docker Compose, tetapi mempunyai pengetahuan mengenai Docker, artikel ini adalah untuk anda. Anda akan belajar mengenai:

Sebelum menyelami bahagian berair artikel ini, sedikit latar belakang teknologi pasti hebat.

Kontainerisasi telah menjadi bahagian penting dari infrastruktur perisian, dan ini berlaku untuk projek berskala besar, sederhana atau kecil. Walaupun kontena tidak baru, Docker menjadikannya popular. Dengan kontena, masalah kebergantungan menjadi perkara masa lalu. Kontena juga berperanan besar dalam menjadikan seni bina perkhidmatan mikro sangat berkesan. Aplikasi perisian dibuat daripada perkhidmatan yang lebih kecil, jadi mudah untuk memiliki perkhidmatan ini di dalam bekas, dan mereka berkomunikasi.

Masalahnya dengan melakukan ini, ialah terdapat banyak kontena yang berjalan. Sehingga menguruskannya menjadi kompleks. Ini mewujudkan keperluan untuk alat membantu menjalankan beberapa bekas, yang dilakukan oleh Docker Compose. Pada akhir artikel, anda akan memahami konsep asas Docker Compose dan dapat menggunakannya juga.

Apa itu Docker Compose?

Tanpa semua kerumitan, Docker Compose adalah alat yang membolehkan anda menguruskan banyak bekas Docker. Ingat perkhidmatan mikro? Konsep membelah aplikasi web ke dalam perkhidmatan yang berbeza? Baiklah, perkhidmatan tersebut akan dijalankan dalam kontena individu yang perlu diuruskan.

Bayangkan aplikasi web mempunyai beberapa perkhidmatan berikut:

Mengikuti seni bina seperti perkhidmatan mikro, perkhidmatan ini akan dipecah dan dijalankan dalam bekas yang berasingan. Docker Compose memudahkan menguruskan semua bekas ini, dan bukannya menguruskannya secara individu. Penting untuk diperhatikan bahawa Docker Compose tidak membina gambar Docker secara eksplisit. Tugas membina gambar dilakukan oleh Docker melalui Dockerfile.

Perbandingan Popular

Adalah biasa untuk mempunyai banyak penyelesaian untuk masalah. Docker Compose menyelesaikan masalah ini untuk menguruskan banyak kontena. Akibatnya, sering terdapat perbandingan dengan penyelesaian lain. Anda harus perhatikan bahawa kebanyakan perbandingan ini adalah salah. Walaupun selalunya tidak sah, lebih baik anda mempelajarinya kerana ia membantu anda memahami Docker Compose dengan lebih baik.

Dua perbandingan yang akan dibincangkan adalah:

Docker Compose vs Kubernetes

Kubernetes sering dibandingkan dengan Docker Compose. Tetapi, persamaan di kedua-dua alat ini sangat kecil, dengan perbezaan yang besar. Teknologi ini tidak berada pada tahap atau skala yang sama. Oleh itu, membandingkan kedua-dua alat itu benar-benar salah.

Kubernetes yang terkenal sebagai k8s adalah alat sumber terbuka yang dapat digunakan untuk mengotomatisasi bekas (tidak terhad kepada Docker). Dengan k8s, anda dapat menyebarkan dan mentadbir bekas, memastikannya berskala pada beban yang berbeza. Kubernetes memastikan bahawa bekas bertoleransi kesalahan dan berfungsi dengan optimum dengan menyebabkannya sembuh sendiri, yang tidak akan anda dapat dari Docker Compose.

Kubernetes adalah alat yang lebih berkuasa. Lebih sesuai untuk mentadbir bekas untuk aplikasi berskala besar dalam pengeluaran.

Docker Compose vs Docker Swarm

Docker Compose juga sering dibandingkan dengan Docker Swarm, dan sama salahnya dengan perbandingan Kubernetes. Sebaliknya, Docker Swarm harus menjadi yang dibandingkan dengan Kubernetes.

Docker Swarm adalah alat sumber terbuka yang membolehkan anda melakukan orkestrasi kontena seperti yang anda lakukan Kubernetes. Kedua-duanya mempunyai kelebihan dan kekurangan, tetapi itu bukan topik perbincangan. Anda akan baik-baik saja mengetahui bahawa keduanya serupa dan bukan merupakan alternatif untuk Docker Compose.

Memasang Docker Compose

Docker Compose adalah alat Docker rasmi, tetapi tidak disertakan dengan pemasangan Docker. Jadi, anda perlu memasangnya sebagai pakej yang berasingan. Proses pemasangan Docker Compose untuk Windows dan Mac tersedia di laman web rasmi.

Untuk memasang Docker Compose di Ubuntu, anda boleh menggunakan arahan berikut:

sudo apt-get install docker-compose

Untuk memasang Docker Compose pada distro Linux yang lain, anda boleh menggunakan curl. Cukup jalankan arahan berikut:

sudo curl -L
https: // github.com / docker / mengarang / melepaskan / memuat turun / 1.18.0 / docker-compose-'uname
-s '-' uname -m '-o / usr / local / bin / docker-compose

Kemudian:

sudo chmod + x / usr / local / bin / docker-compose

Perintah pertama memuat turun versi terbaru Docker Compose ke direktori yang dikhaskan untuk pakej. Yang kedua menetapkan izin fail, menjadikannya dapat dijalankan.

The Docker-Compose.Fail yml

Tidak salah jika mengatakan fail Docker Compose adalah Docker Compose, apa itu Dockerfile kepada Docker. Di dalam fail Docker Compose, terdapat semua arahan yang diikuti oleh Docker Compose semasa menguruskan kontena. Di sini, anda menentukan perkhidmatan yang akhirnya menjadi wadah. Anda juga menentukan rangkaian dan jumlah yang bergantung pada perkhidmatan.

Fail Docker Compose menggunakan sintaks YAML, dan anda harus menyimpan sebagai docker-compose.yml. Anda boleh mempunyai perkhidmatan untuk antrian backend, frontend, pangkalan data dan mesej dalam aplikasi web. Perkhidmatan ini memerlukan pergantungan khusus. Ketergantungan seperti rangkaian, port, penyimpanan untuk operasi yang optimum. Semua yang diperlukan untuk keseluruhan aplikasi akan ditentukan dalam fail Docker Compose.

Anda memerlukan pemahaman asas mengenai sintaks YAML untuk menulis fail karangan anda. Sekiranya anda tidak biasa dengan itu, anda perlu mengambil masa kurang dari satu jam. Terdapat banyak pasangan nilai atau arahan kunci dalam fail anda. Yang tertinggi adalah:

Walau bagaimanapun, hanya versi dan perkhidmatan yang akan dibincangkan, kerana anda dapat menentukan dua yang lain dalam arahan perkhidmatan.

Versi

Semasa menulis fail anda, anda akan menentukan versi terlebih dahulu. Pada masa penulisan, Docker Compose hanya mempunyai versi 1, 2 dan 3. Tidak menghairankan bahawa ia adalah versi yang disyorkan untuk digunakan kerana mempunyai perbezaan tertentu dari versi yang lebih lama.

Anda dapat menentukan versi yang akan digunakan untuk Docker Compose dalam fail seperti yang dilihat di bawah:

Perkhidmatan

Kunci perkhidmatan boleh dikatakan kunci paling penting dalam fail Docker Compose. Di sini, anda menentukan bekas yang ingin anda buat. Terdapat banyak pilihan dan banyak kombinasi untuk mengkonfigurasi bekas di bahagian fail ini. Ini adalah beberapa pilihan yang dapat anda tentukan di bawah kunci perkhidmatan:

Di bahagian ini, anda akan mengetahui bagaimana setiap pilihan ini mempengaruhi bekas.

Imej

Pilihan ini menentukan gambar apa yang digunakan oleh perkhidmatan. Ia menggunakan konvensi yang sama seperti yang anda gunakan ketika menarik gambar dari Dockerhub di Dockerfile. Inilah contohnya:

gambar: postgres: terkini

Namun, tidak ada batasan untuk menggunakan fail Dockerhub sahaja. Anda juga boleh membina gambar dari mesin anda melalui fail Docker Compose anda, menggunakan Dockerfile. Anda boleh menggunakan arahan "build", "konteks" dan "dockerfile" untuk melakukan ini.

Inilah contohnya:

membina:
konteks: .
dockerfile: Dockerfile

"Konteks" harus berisi jalan ke direktori dengan Dockerfile. Kemudian "dockerfile" mengandungi nama Dockerfile yang akan digunakan. Adalah biasa untuk menamakan Dockerfile anda sebagai "Dockerfile", tetapi ini memberi peluang untuk menggunakan sesuatu yang berbeza. Anda harus ingat bahawa ini bukan satu-satunya cara untuk menggunakan gambar melalui Dockerfile.

Container_name

Docker memberikan nama rawak ke bekas. Tetapi anda mungkin mahu mempunyai nama khas untuk bekas tersebut. Dengan kekunci "container_name", anda boleh memberikan nama tertentu kepada kontena, bukannya nama Dockers yang dihasilkan secara rawak.

Inilah contohnya:

container_name: aplikasi linuxhint

Walau bagaimanapun, ada satu perkara yang harus anda perhatikan: jangan memberikan nama yang sama untuk pelbagai perkhidmatan. Nama kontena mestilah unik; berbuat demikian akan menyebabkan perkhidmatan gagal.

Mula semula

Infrastruktur perisian pasti gagal. Dengan pengetahuan mengenai perkara ini, lebih mudah untuk merancang pemulihan dari kegagalan ini. Terdapat banyak sebab wadah gagal, jadi kunci mulakan semula memberitahu wadah untuk bangun atau tidak. Anda mempunyai pilihan berikut, tidak, selalu, mengalami kegagalan dan kecuali jika berhenti. Pilihan ini menunjukkan bahawa bekas tidak akan dimulakan semula, akan sentiasa dimulakan semula, hanya dimulakan semula apabila gagal atau hanya apabila dihentikan.

Inilah contohnya:

mulakan semula: selalu

Bergantung kepada

Perkhidmatan dijalankan secara terpisah. Tetapi secara praktiknya, perkhidmatan tidak dapat dilakukan secara berasingan. Perlu ada pergantungan pada perkhidmatan lain. Sebagai contoh, perkhidmatan backend aplikasi web akan bergantung pada pangkalan data, perkhidmatan cache, dll. Pada kekunci "depend_on", anda boleh menambahkan kebergantungan.

Inilah contohnya:

bergantung kepada:
- db

Melakukan ini bermaksud bahawa Docker Compose akan memulakan perkhidmatan tersebut sebelum perkhidmatan semasa. Namun, ia tidak memastikan bahawa perkhidmatan tersebut siap digunakan. Satu-satunya jaminan adalah bahawa bekas akan dimulakan.

Persekitaran

Aplikasi bergantung pada pemboleh ubah tertentu. Untuk keselamatan dan kemudahan penggunaan, anda mengeluarkannya dari kod dan menetapkannya sebagai pemboleh ubah persekitaran. Contoh pemboleh ubah tersebut ialah kunci API, kata laluan, dan sebagainya. Perkara ini biasa berlaku dalam aplikasi web. Perhatikan bahawa kunci ini hanya berfungsi jika tidak ada arahan "bina" dalam perkhidmatan tersebut. Oleh itu, buat gambar terlebih dahulu.

Lihat ini:

persekitaran:
API-KEY: 'the-api-key'
CONFIG: 'pembangunan'
SESSION_SECRET: 'rahsia'

Sekiranya anda ingin menggunakan arahan "build", anda harus menentukan pemboleh ubah persekitaran dalam arahan "args". Arahan "args" adalah sub-arahan "build".

Inilah contohnya:

membina:
konteks: .
berhujah:
api-key: 'the-api-key'
config: 'pembangunan'
session_secret: 'rahsia'

Pelabuhan

Tidak ada bekas yang berfungsi secara terpisah walaupun berjalan secara berasingan dari yang lain. Untuk menyediakan pautan untuk berkomunikasi dengan "dunia luar", anda perlu memetakan port. Anda memetakan port kontena Docker ke port host sebenar. Dari Docker, anda mungkin pernah menemui argumen "-p" yang digunakan untuk memetakan port. Arahan port berfungsi serupa dengan argumen "-p".

pelabuhan:
- "5000: 8000"

Isipadu

Docker container tidak dapat menyimpan data secara berterusan, sehingga kehilangan data ketika dimulakan semula. Dengan jumlah yang banyak, anda boleh menyelesaikannya. Volume memungkinkan untuk membuat simpanan data yang berterusan. Ia melakukan ini dengan memasang direktori dari host docker ke direktori container docker. Anda juga boleh menetapkan jumlah sebagai perkhidmatan peringkat teratas.

Inilah contohnya:

jilid:
- host-dir: / ujian / direktori

Terdapat banyak pilihan yang tersedia semasa mengkonfigurasi jumlah, anda boleh memeriksanya.

Rangkaian

Rangkaian juga boleh dibuat dalam perkhidmatan. Dengan kunci rangkaian, anda boleh mengatur rangkaian untuk perkhidmatan individu. Di sini, anda boleh menetapkan pemacu yang digunakan rangkaian, jika membenarkan IPv6, dll. Anda juga boleh menyediakan rangkaian seperti perkhidmatan, seperti jumlah.

Inilah contohnya:

rangkaian:
- lalai

Terdapat banyak pilihan semasa mengkonfigurasi rangkaian, anda boleh melihatnya.

Titik masuk

Semasa anda memulakan bekas, anda mesti menjalankan arahan tertentu. Sebagai contoh, jika perkhidmatan tersebut adalah aplikasi web, anda mesti memulakan pelayan. Kekunci titik masuk membolehkan anda melakukan ini. Entrypoint berfungsi seperti ENTRYPOINT di Dockerfile. Satu-satunya perbezaan dalam kes ini adalah bahawa apa sahaja yang anda tentukan di sini mengatasi konfigurasi ENTRYPOINT di Dockerfile.titik masuk: larian termos

Inilah contohnya:

titik masuk: larian termos

Perintah Mengarang Docker

Setelah membuat fail Docker-Compose, anda perlu menjalankan perintah tertentu agar Compose berfungsi. Di bahagian ini, anda akan belajar mengenai beberapa perintah Docker Compose utama. Mereka adalah:

Pengarang Docker

Perintah Docker-compose ini membantu membina gambar, kemudian membuat dan memulakan bekas Docker. Kontena adalah dari perkhidmatan yang ditentukan dalam fail tulis. Sekiranya bekas sudah berjalan dan anda menjalankan penggabungan dok, ia akan membuat semula bekas. Perintahnya adalah:

dok buat-buat

Permulaan penggubalan dok

Perintah Docker-compose ini memulakan bekas Docker, tetapi tidak membina gambar atau membuat bekas. Oleh itu, ia hanya memulakan bekas sekiranya telah dibuat sebelumnya.

Hentian penggambaran dok

Anda sering perlu menghentikan bekas setelah membuatnya dan memulakannya. Di sinilah perintah berhenti Docker-compose sangat berguna. Perintah ini pada dasarnya menghentikan perkhidmatan yang berjalan, tetapi wadah dan rangkaian penyediaan tetap utuh.
Perintahnya adalah:

stop-compose dok

Docker-mengarang

Perintah Docker-compose down juga menghentikan bekas Docker seperti perintah stop. Tetapi ia bekerja lebih jauh. Docker-compose down, tidak hanya menghentikan bekas, tetapi juga membuangnya. Rangkaian, jilid dan gambar Docker sebenar juga dapat dikeluarkan jika anda menggunakan argumen tertentu. Perintahnya adalah:

dok mengarang

Sekiranya anda berhasrat untuk membuang jilid, anda tentukan dengan menambahkan -volume. Sebagai contoh:

pengarang -komposisi bawah --volume

Sekiranya anda ingin membuang gambar, anda tentukan dengan menambahkan -rmi semua atau -rmi tempatan. Sebagai contoh:

docker-compose down --rmi semua
dok menulis-down --rmi tempatan

Di mana semua menyebabkan Docker Compose membuang semua gambar, dan tempatan menyebabkan Docker Compose hanya membuang gambar tanpa tag khas yang ditetapkan oleh medan 'image'.

Jeda penggabungan dok

Terdapat senario di mana anda harus menggantung bekas, tanpa membunuh atau menghapusnya. Anda boleh mencapainya dengan perintah jeda penggabungan Docker. Ini menghentikan aktiviti bekas itu, jadi anda boleh menyambungnya semula apabila anda mahu. Perintahnya adalah:

jeda penggubah dok

Docker-compose berhenti seketika

Pause jeda-buat-dok adalah kebalikan dari perintah jeda-tulis-buat. Anda boleh menggunakannya untuk menyambung semula proses yang ditangguhkan akibat penggunaan jeda Docker-compose. Perintahnya adalah:

docker-compose tidak berhenti

Docker-compose ps

Docker-compose ps menyenaraikan semua bekas yang dibuat dari perkhidmatan dalam fail Docker-Compose. Ia serupa dengan dok dok yang menyenaraikan semua kontena yang berjalan di host docker. Walau bagaimanapun, ps-compose docker adalah khusus untuk bekas dari fail Docker Compose. Perintahnya adalah:

docker-mengarang ps

Bawa Semua Bersama

Sekarang setelah anda melihat beberapa konsep penting di sebalik fail Docker Compose, mari kita satukan semuanya. Berikut adalah contoh fail Docker-Compose untuk aplikasi web Python Django. Anda akan melihat perincian setiap baris dalam fail ini dan melihat apa yang mereka lakukan.

versi: '3'
perkhidmatan:
db:
gambar: postgres
laman web:
membina: .
arahan: python mengurus.py runerver 0.0.0.0: 8000
jilid:
- .:/kod
pelabuhan:
- "8000: 8000"
bergantung kepada:
- db

Ringkasnya ialah dengan fail Docker-Compose ini, pangkalan data PostgreSQL dibuat dan pelayan django dimulakan.

Kisah panjangnya ialah:

  1. Fail ini menggunakan versi 3 Docker-Compose.
  2. Ini mewujudkan dua perkhidmatan. Perkhidmatan db dan web.
  3. Perkhidmatan db menggunakan gambar postgres rasmi docker.
  4. Perkhidmatan web membina imejnya sendiri dari direktori semasa. Oleh kerana ia tidak menentukan konteks dan kunci Dockerfile, Dockerfile diharapkan dapat dinamakan "Dockerfile" secara konvensional.
  5. Perintah yang akan dijalankan setelah kontena bermula ditentukan.
  6. Isipadu dan port ditentukan. Kedua-duanya menggunakan konvensyen host: pemetaan kontena.
  7. Untuk kelantangan, direktori semasa "."Dipetakan ke direktori" / code "di dalam bekas. Ini membantu data dalam bekas menjadi berterusan, jadi tidak hilang setiap kali bekas dimulakan.
  8. Untuk port, port host 8000 dipetakan ke port container 8000. Perhatikan bahawa aplikasi web berjalan di port 8000. Oleh itu, aplikasi web dapat diakses di host melalui port tersebut.
  9. Akhirnya, perkhidmatan web bergantung pada perkhidmatan db. Oleh itu, perkhidmatan web hanya akan bermula apabila bekas db telah dimulakan.
  10. Lebih banyak mengenai Dockerfile untuk aplikasi Django dan fail Docker Compose dapat diperoleh dari dokumentasi.

Kesimpulannya

Anda tidak perlu menjadi pakar Docker untuk menggunakan Docker Compose. Sebagai pemula yang tidak berhasrat untuk menguasai alat ini, ada baiknya mempelajari apa yang anda perlukan sahaja. Dalam artikel ini, anda telah mempelajari asas-asas Docker Compose. Sekarang, anda faham mengapa Docker Compose diperlukan, perbandingan yang salah, cara menyediakan fail konfigurasi Docker Compose dan perintahnya juga. Sangat menggembirakan mengetahui perkara-perkara ini, tetapi kegembiraan sebenarnya datang dari mempraktikkannya. Sudah tiba masanya untuk bekerja.

Alat Berguna untuk Pemain Linux
Sekiranya anda suka bermain permainan di Linux, kemungkinan anda telah menggunakan aplikasi dan utiliti seperti Wine, Lutris dan OBS Studio untuk meni...
HD Remastered Games untuk Linux yang Tidak Pernah Melancarkan Linux Sebelumnya
Banyak pembangun dan penerbit permainan hadir dengan penghapus HD permainan lama untuk memperpanjang usia francais, harap peminat meminta keserasian d...
Cara Menggunakan AutoKey untuk Mengautomasikan Permainan Linux
AutoKey adalah utiliti automasi desktop untuk Linux dan X11, yang diprogramkan dalam Python 3, GTK dan Qt. Dengan menggunakan skrip dan fungsi MACRO, ...