Apa itu Docker Container? - Mengandungi Aplikasi Anda Menggunakan Docker



Docker Container adalah penyelesaian alternatif ringan untuk Mesin Maya untuk membuat, menyebarkan dan menjalankan aplikasi di dalam bekas.

Baiklah, saya harap anda telah membaca blog saya sebelumnya Docker di mana saya telah merangkumi asas-asas Docker. Di sini, dalam blog Docker Container ini saya akan membincangkan mengenai apa itu Docker Container dan bagaimana ia berfungsi. Sebahagian besarnya, kami akan memfokuskan pada hands-on dan kes penggunaan Docker.

Saya telah menyenaraikan topik untuk blog Docker Container ini:





  • Mengapa Kita Memerlukan Kontena Docker?
  • Bagaimana Kontena Docker berfungsi?
  • Casing Penggunaan Docker Container

Mengapa Kita Memerlukan Kontena Docker?

Saya masih ingat dengan betul, saya sedang mengusahakan projek. Dalam projek itu, kami mengikuti seni bina perkhidmatan mikro. Bagi anda yang tidak tahu apa itu perkhidmatan mikro, jangan risau saya akan memberi anda pengenalan mengenainya.

Idea di sebalik perkhidmatan mikro adalah bahawa jenis aplikasi tertentu menjadi lebih mudah untuk dibina dan dikekalkan apabila dipecah menjadi kepingan yang lebih kecil dan boleh digabungkan yang berfungsi bersama. Setiap komponen dikembangkan secara berasingan, dan aplikasinya hanyalah jumlah komponen penyusunnya.



Pertimbangkan contoh di bawah:

Aplikasi Belanja Dalam Talian - Docker Container - Edureka

Dalam rajah di atas terdapat kedai dalam talian dengan perkhidmatan mikro yang berasingan untuk akaun pengguna, katalog produk, pemprosesan pesanan dan keranjang belanja.



Nah, seni bina ini mempunyai banyak faedah:

  • Walaupun salah satu perkhidmatan mikro anda gagal, keseluruhan aplikasi anda tidak terjejas.
  • Lebih senang diuruskan

Terdapat banyak faedah lain juga, saya tidak akan mengulas lebih terperinci mengenai perkhidmatan mikro dalam siaran ini. Tetapi, tidak lama lagi saya akan muncul dengan beberapa blog di perkhidmatan mikro juga.

Dalam seni bina ini, kami menggunakan Mesin Maya CentOS. Mesin Maya tersebut dikonfigurasi dengan menulis skrip panjang. Nah, mengkonfigurasi VM itu bukan satu-satunya masalah.

panjang javascript bagi tatasusunan

Membangunkan aplikasi sedemikian memerlukan permulaan beberapa perkhidmatan mikro dalam satu mesin. Oleh itu, jika anda memulakan lima perkhidmatan tersebut, anda memerlukan lima VM pada mesin tersebut. Pertimbangkan rajah di bawah:

Masalah lain agak biasa, saya tahu banyak dari anda boleh mengaitkannya. Aplikasi ini berfungsi dalam komputer riba pemaju tetapi tidak dalam ujian atau pengeluaran. Ini mungkin kerana tidak menjaga persekitaran pengkomputeran yang konsisten. Pertimbangkan rajah di bawah:

Terdapat banyak masalah lain selain dari ini, tetapi saya rasa, masalah ini cukup untuk saya jelaskan mengenai keperluan Docker Containers.

Ketahui Bagaimana Kontena Docker Lebih Baik Daripada Mesin Maya

Jadi, bayangkan jika saya memberikan 8 GB RAM untuk semua VM saya, dan saya mempunyai 5 perkhidmatan mikro yang berjalan pada Mesin Maya yang berbeza. Sekiranya demikian, VM ini memerlukan RAM 40 GB. Nah, sekarang saya memerlukan konfigurasi mesin hos saya menjadi sangat tinggi, hampir 44 GB RAM semestinya ada di mesin hos saya. Jelas, ini bukan penyelesaian yang mampan untuk seni bina seperti itu kerana, saya membuang banyak sumber di sini.

Baiklah, saya mempunyai banyak sumber untuk dibazirkan, tetapi saya masih menghadapi masalah ketidakkonsistenan dalam kitaran hayat penghantaran perisian (SDLC) saya. Saya harus mengkonfigurasi VM ini dalam ujian dan juga dalam persekitaran produk. Di suatu tempat dalam proses itu, beberapa perisian tidak dikemas kini dalam pelayan ujian, dan pasukan Dev menggunakan versi perisian yang dikemas kini. Ini membawa kepada konflik.

Bagaimana jika saya menggunakan 100 VM, maka mengkonfigurasi setiap VM akan memerlukan banyak masa, dan pada masa yang sama juga terdedah kepada kesalahan.

Sekarang, mari kita fahami apa itu Docker Container dan bagaimana ia berfungsi, dan bagaimana ia menyelesaikan masalah saya.

Apa itu Docker Container?

Docker adalah alat yang dirancang untuk mempermudah membuat, menyebarkan dan menjalankan aplikasi dengan menggunakan wadah.

Anda boleh membuat Docker Containers, bekas ini akan mengandungi semua binari dan perpustakaan yang diperlukan untuk aplikasi atau perkhidmatan mikro anda dalam kes saya. Oleh itu, aplikasi anda terdapat dalam bekas, atau anda telah memasukkan aplikasi anda. Kini, bekas yang sama dapat digunakan di persekitaran Uji dan Prod.

Docker Containers adalah penyelesaian ringan untuk Mesin Maya, dan ia menggunakan OS host. Bahagian yang terbaik, anda tidak perlu memperuntukkan RAM terlebih dahulu ke Docker Container, ia akan mengambilnya apabila diperlukan. Oleh itu, dengan Docker Container saya tidak perlu bimbang tentang pembaziran sumber.

Mari kita fahami sekarang, bagaimana Docker Container berfungsi.

Bagaimana Kontena Docker Berfungsi?

Gambarajah di bawah pada dasarnya adalah cara untuk menggunakan Docker. Dan saya menganggap bahawa, anda mempunyai idea mengenai Docker Image dan Dockerfile.

Kawan-kawan, saya tahu rajahnya kelihatan agak rumit, tetapi percayalah bahawa itu bukan kompleks. Di bawah ini adalah penjelasan rajah tersebut, walaupun setelah itu anda merasa sukar untuk memahami, anda boleh memberi komen mengenai keraguan anda, saya akan menjawab soalan tersebut secepat mungkin.

  • Pembangun terlebih dahulu akan menulis kod projek dalam fail Docker dan kemudian membina gambar dari fail tersebut.
  • Gambar ini akan mengandungi keseluruhan kod projek.
  • Sekarang, anda boleh menjalankan Gambar Docker ini untuk membuat seberapa banyak bekas yang anda mahukan.
  • Imej Docker ini boleh dimuat naik di hub Docker (Pada dasarnya ia adalah repositori awan untuk Imej Docker anda, anda boleh menyimpannya awam atau peribadi).
  • Gambar Docker ini di hub Docker, boleh ditarik oleh pasukan lain seperti QA atau Prod.

Ini bukan sahaja mencegah pembaziran sumber daya, tetapi juga memastikan bahawa persekitaran pengkomputeran yang ada di komputer riba Pengembang ditiru di pasukan lain juga. Saya rasa sekarang, saya tidak perlu memberitahu anda mengapa kita memerlukan Docker.

Ini adalah salah satu cara untuk menggunakannya, saya rasa anda pasti ingin tahu bagaimana saya menggunakan Docker untuk menyelesaikan masalah perkhidmatan mikro saya. Izinkan saya memberi gambaran umum mengenai perkara yang sama.

Berikut adalah penjelasan rajah:

  • Pertama, kami menulis keperluan kompleks dalam Dockerfile.
  • Kemudian, kami mendorongnya ke GitHub.
  • Selepas itu kami menggunakan pelayan CI (Jenkins).
  • Pelayan Jenkins ini akan menariknya dari Git, dan membina persekitaran yang tepat. Ini akan digunakan dalam pelayan Pengeluaran dan juga pelayan Uji.
  • Kami menyebarkannya ke pementasan (Ini merujuk pada menyebarkan perisian Anda ke pelayan untuk tujuan pengujian, sebelum menyebarkannya sepenuhnya ke produksi.) Lingkungan untuk Penguji.
  • Pada dasarnya, kami melancarkan apa yang kami miliki dalam Pengembangan, Pengujian dan Pementasan ke dalam Pengeluaran.

Sebenarnya adil untuk mengatakan bahawa, Docker mempermudah hidup saya.

Nah, itulah kisah syarikat saya, mari kita lihat kajian kes Universiti Indiana. Bagaimana Docker menyelesaikan masalah mereka.

Kajian Kes Universiti Indiana:

Universiti Indiana adalah sistem universiti awam berbilang kampus di negeri Indiana, Amerika Syarikat.

Pernyataan masalah

Mereka menggunakan skrip khusus untuk menyebarkan aplikasi di VM.

Persekitaran mereka dioptimumkan untuk aplikasi berbasis Java lama mereka. Persekitaran mereka yang semakin meningkat melibatkan produk baru yang tidak hanya berasaskan java. Untuk memberi pengalaman terbaik kepada pelajar mereka, Universiti perlu mulai memodenkan aplikasi.

Universiti ingin memperbaiki cara mereka membuat arkitek aplikasi, dengan beralih ke seni bina berdasarkan perkhidmatan mikro untuk aplikasi mereka.

Keselamatan diperlukan untuk data pelajar seperti SSN dan data kesihatan pelajar.

Penyelesaian:

Semua masalah diselesaikan oleh Docker Data Center (DDC), perhatikan rajah di bawah:

Pendaftaran Dipercayai Docker - Ia menyimpan Docker Images.

UI Web UCP (Universal Control Plane) - Membantu menguruskan keseluruhan kelompok dari satu tempat. Perkhidmatan digunakan menggunakan UI web UCP, menggunakan gambar Docker yang disimpan di DTR (Docker Trusted Registry).

Pasukan operasi IT memanfaatkan Universal Control Plane untuk menyediakan perisian yang dipasang di Docker pada hos, dan kemudian menggunakan aplikasi mereka tanpa perlu melakukan banyak langkah manual untuk mengatur semua infrastruktur mereka.

UCP dan DTR berintegrasi dengan pelayan LDAP mereka untuk menyediakan akses ke aplikasi mereka dengan cepat.

Saya berharap anda telah membaca blog sebelumnya untuk mengetahui asas-asas Docker.

Sekarang, saya akan menerangkan kepada anda bagaimana kita boleh menggunakan Docker Compose untuk aplikasi multi container.

Hands-On Docker:

Saya menganggap anda telah memasang Docker.Saya akan menggunakan Docker Compose dalam posting ini, di bawah ini saya telah memberikan sedikit pengenalan kepada Docker Compose.

Karang Docker: Ini adalah alat untuk menentukan dan menjalankan aplikasi Docker berbilang kontena. Dengan Docker Compose, anda dapat menggunakan file Compose untuk mengkonfigurasi perkhidmatan aplikasi anda. Kemudian, dengan menggunakan satu arahan, anda boleh membuat dan memulakan semua perkhidmatan dari konfigurasi anda.

Katakan anda mempunyai banyak aplikasi dalam pelbagai bekas dan semua bekas itu dihubungkan bersama. Oleh itu, anda tidak mahu melaksanakan setiap bekas itu satu persatu. Tetapi, anda mahu menjalankan bekas tersebut dengan satu arahan. Di situlah Docker Compose masuk ke dalam gambar. Dengan itu anda boleh menjalankan banyak aplikasi dalam pelbagai wadah dengan satu perintah. iaitu penggubah-dok.

Contoh: Bayangkan anda mempunyai bekas yang berbeza, yang satu menjalankan aplikasi web, yang lain menjalankan postgres dan yang lain menjalankan redis, dalam fail YAML. Itu dipanggil file compose docker, dari sana anda boleh menjalankan bekas ini dengan satu perintah.

Mari kita ambil satu lagi contoh:

Andaikan anda ingin menerbitkan blog, untuk itu anda akan menggunakan CMS (Content Management System), dan wordpress adalah CMS yang paling banyak digunakan. Pada asasnya, anda memerlukan satu bekas untuk WordPress dan anda memerlukan satu bekas lagi sebagai MySQL untuk bahagian belakang, bahawa wadah MySQL harus dihubungkan ke wadah wordpress. Kami juga memerlukan satu wadah lagi untuk Php Myadmin yang akan dihubungkan ke pangkalan data MySQL, pada dasarnya, ia digunakan untuk mengakses pangkalan data MySQL.

Bagaimana saya melaksanakan contoh yang dinyatakan di atas secara praktikal.

Langkah-langkah yang terlibat:

  1. Pasang Docker Compose :
  2. Pasang WordPress: Kami akan menggunakan rasmi WordPress dan MariaDB Gambar dok.
  3. Pasang MariaDB: Ini adalah salah satu pelayan pangkalan data yang paling popular di dunia. Ia dibuat oleh pembangun asal MySQL. MariaDB dikembangkan sebagai perisian sumber terbuka dan sebagai pangkalan data relasional, ia menyediakan antara muka SQL untuk mengakses data.
  4. Pasang PhpMyAdmin: Ini adalah alat perisian percuma yang ditulis dalam PHP, yang bertujuan untuk mengendalikan pentadbiran MySQL melalui Web.
  5. Buat Laman WordPress:

Mari kita mulakan!

Pasang Docker Compose:

Pasang Python Pip terlebih dahulu:

sudo apt-get install python-pip

Sekarang, anda boleh memasang Docker Compose:

sudo pip install docker-compose

Pasang WordPress:

Buat direktori wordpress:

mkdir wordpress

Masukkan direktori wordpress ini:

cd wordpress /

Dalam direktori ini buat fail Docker Compose YAML, kemudian edit dengan menggunakan gedit:

sudo gedit docker-compose.yml

Tampal baris kod di bawah dalam fail yaml:

wordpress: image: wordpress link: - wordpress_db: mysql port: - 8080: 80 wordpress_db: image: mariadb environment: MYSQL_ROOT_PASSWORD: edureka phpmyadmin: image: corbinu / docker-phpmyadmin pautan: - wordpress_db: port mysql: - 8181: 80 persekitaran: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Saya tahu anda mahu saya menerangkan kod ini, jadi apa yang akan saya lakukan, saya akan mengambil bahagian kecil kod ini dan menjelaskan kepada anda apa yang berlaku.

wordpress_db: ... persekitaran: MYSQL_ROOT_PASSWORD: edureka ...

Ini akan menetapkan pemboleh ubah persekitaran di dalam wadah wordpress_db yang disebut MYSQL_ROOT_PASSWORD dengan kata laluan yang anda inginkan. Gambar MariaDB Docker dikonfigurasi untuk memeriksa pemboleh ubah persekitaran ini ketika ia dimulakan dan akan mengurus penyediaan DB dengan akaun root dengan kata laluan yang ditakrifkan sebagai MYSQL_ROOT_PASSWORD.

wordpress: ... port: - 8080: 80 ...

Nombor port pertama adalah nombor port di host, dan nombor port kedua adalah port di dalam bekas. Jadi, konfigurasi ini meneruskan permintaan pada port 8080 host ke port pelayan web lalai 80 di dalam bekas.

pautan phpmyadmin: image: corbinu / docker-phpmyadmin: - wordpress_db: port mysql: - 8181: 80 persekitaran: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Ini meraih docker-phpmyadmin oleh ahli komuniti corbinu, memautkannya ke wadah wordpress_db kami dengan nama mysql (bermaksud dari dalam wadah phpmyadmin yang merujuk kepada nama host mysql akan diteruskan ke wadah wordpress_db kami), memaparkan portnya 80 di port 8181 sistem hos, dan akhirnya menetapkan beberapa pemboleh ubah persekitaran dengan nama pengguna dan kata laluan MariaDB kami. Gambar ini tidak merebut pemboleh ubah persekitaran MYSQL_ROOT_PASSWORD secara automatik dari persekitaran wordpress_dbcontainer, seperti yang dilakukan oleh gambar wordpress. Kita sebenarnya harus menyalin baris MYSQL_ROOT_PASSWORD: edureka dari bekas wordpress_db, dan menetapkan nama pengguna ke root.

Sekarang mulakan kumpulan aplikasi:

docker-menyusun up -d

Itu sahaja yang harus anda lakukan. Anda boleh menambah seberapa banyak wadah yang anda suka dengan cara ini, dan menghubungkan semuanya dengan cara yang anda mahu.

Sekarang, dalam penyemak imbas pergi ke port 8080, menggunakan IP awam atau nama host anda, seperti yang ditunjukkan di bawah:

localhost: 8080

Isi borang ini dan klik pasang WordPress.

Setelah selesai, lawati alamat IP pelayan anda sekali lagi (kali ini menggunakan port 8181, mis. Localhost: 8181). Anda akan disambut oleh skrin masuk phpMyAdmin:

Teruskan dan log masuk menggunakan root nama pengguna dan kata laluan yang anda tetapkan dalam fail YAML, dan anda akan dapat melayari pangkalan data anda. Anda akan melihat bahawa pelayan merangkumi pangkalan data wordpress, yang mengandungi semua data dari pemasangan WordPress anda.

Di sini, saya mengakhiri blog Docker Container saya. Saya harap anda telah menikmati siaran ini. Anda boleh menyemak blog lain dalam siri ini juga, yang berkaitan dengan asas-asas Docker.

Sekiranya anda mendapati blog Docker Container ini relevan, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Persijilan Edureka DevOps membantu pelajar memperoleh kepakaran dalam pelbagai proses dan alat DevOps seperti Boneka, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack dan GIT untuk mengautomasikan pelbagai langkah dalam SDLC.

Ada soalan untuk saya? Sila sebutkan di bahagian komen dan saya akan menghubungi anda.