Apa itu Docker Container? - Masukkan Aplikasi Anda ke dalam Container Menggunakan Docker



Docker Container adalah solusi alternatif ringan untuk Mesin Virtual untuk membuat, menerapkan, dan menjalankan aplikasi di dalam wadah.

Baiklah, saya berharap Anda telah membaca blog saya sebelumnya di Buruh pelabuhan di mana saya telah membahas dasar-dasar Docker. Disini, di blog Docker Container ini saya akan membahas tentang apa itu Docker Containers dan cara kerjanya. Sebagian besar, kami akan berfokus pada Hands-on dan kasus penggunaan Docker.

Saya telah membuat daftar topik untuk blog Docker Container ini:





  • Mengapa Kami Membutuhkan Docker Containers?
  • Bagaimana Docker Containers bekerja?
  • Kasus Penggunaan Kontainer Docker

Mengapa Kami Membutuhkan Docker Containers?

Saya masih ingat dengan benar, saya sedang mengerjakan sebuah proyek. Dalam proyek itu kami mengikuti arsitektur layanan mikro. Bagi Anda yang belum tahu apa itu microservice, jangan khawatir saya akan memperkenalkannya.

Ide di balik layanan mikro adalah bahwa jenis aplikasi tertentu menjadi lebih mudah untuk dibangun dan dipelihara ketika dipecah menjadi bagian-bagian yang lebih kecil dan dapat disusun yang bekerja sama. Setiap komponen dikembangkan secara terpisah, dan aplikasi kemudian hanyalah jumlah dari komponen penyusunnya.



Perhatikan contoh di bawah ini:

Aplikasi Belanja Online - Docker Container - Edureka

Pada diagram di atas terdapat toko online dengan layanan mikro terpisah untuk akun pengguna, katalog produk, pemrosesan pesanan, dan keranjang belanja.



bagaimana menggunakan package di java

Nah, arsitektur ini memiliki banyak sekali manfaat:

  • Meskipun salah satu layanan mikro Anda gagal, sebagian besar aplikasi Anda tidak terpengaruh.
  • Lebih mudah dikelola

Ada banyak manfaat lainnya juga, saya tidak akan membahas banyak detail tentang layanan mikro di postingan ini. Tapi, sebentar lagi saya akan membuat beberapa blog di layanan mikro juga.

Dalam arsitektur ini, kami menggunakan Mesin Virtual CentOS. Mesin Virtual tersebut dikonfigurasi dengan menulis skrip yang panjang. Nah, mengonfigurasi VM tersebut bukanlah satu-satunya masalah.

Mengembangkan aplikasi semacam itu membutuhkan dimulainya beberapa layanan mikro dalam satu mesin. Jadi, jika Anda memulai lima dari layanan tersebut, Anda memerlukan lima VM di mesin itu. Perhatikan diagram di bawah ini:

Masalah lain cukup umum, saya tahu banyak dari Anda yang bisa mengaitkannya. Aplikasi berfungsi di laptop pengembang tetapi tidak dalam pengujian atau produksi. Ini bisa jadi karena tidak menjaga lingkungan komputasi yang konsisten. Perhatikan diagram di bawah ini:

Ada banyak masalah lain selain ini juga, tetapi saya rasa, masalah ini cukup bagi saya untuk menjelaskan kepada Anda kebutuhan Docker Containers.

Pelajari Bagaimana Docker Container Lebih Baik Dari Mesin Virtual

Jadi, bayangkan jika saya memberikan 8 GB RAM untuk semua VM saya, dan saya memiliki 5 layanan mikro yang berjalan di Mesin Virtual yang berbeda. Dalam hal ini, VM ini akan membutuhkan RAM 40 GB. Nah, sekarang saya membutuhkan konfigurasi mesin host saya sangat tinggi, hampir 44 GB RAM harus ada di mesin host saya. Jelas, ini bukan solusi berkelanjutan untuk arsitektur seperti itu karena, saya membuang banyak sumber daya di sini.

Baiklah, saya memiliki banyak sumber daya untuk disia-siakan, tetapi saya masih memiliki masalah ketidakkonsistenan dalam siklus hidup pengiriman perangkat lunak (SDLC) saya. Saya harus mengonfigurasi VM ini dalam pengujian serta di lingkungan prod. Di suatu tempat dalam proses itu, beberapa perangkat lunak tidak diperbarui di server pengujian, dan tim Pengembang menggunakan versi perangkat lunak yang diperbarui. Ini mengarah pada konflik.

Bagaimana jika saya menggunakan 100 VM, maka mengonfigurasi setiap VM akan memakan banyak waktu, dan pada saat yang sama juga rawan kesalahan.

Sekarang, mari kita pahami apa itu Docker Container dan bagaimana cara kerjanya, dan bagaimana itu memecahkan masalah saya.

Apa itu Container Docker?

Docker adalah alat yang dirancang untuk mempermudah membuat, menerapkan, dan menjalankan aplikasi dengan menggunakan kontainer.

Anda dapat membuat Docker Container, container ini akan berisi semua binari dan pustaka yang diperlukan untuk aplikasi atau layanan mikro Anda dalam kasus saya. Jadi aplikasi Anda ada dalam sebuah wadah, atau Anda telah memasukkan aplikasi Anda ke dalam wadah. Sekarang, container yang sama dapat digunakan di lingkungan Test dan Prod.

Docker Containers adalah solusi ringan untuk Mesin Virtual, dan menggunakan OS host. Bagian terbaiknya, Anda tidak perlu mengalokasikan RAM apa pun ke Docker Container, itu akan mengambilnya sesuai kebutuhan. Jadi, dengan Docker Container, saya tidak perlu khawatir tentang pemborosan sumber daya.

Mari kita pahami sekarang, cara kerja Docker Container.

Bagaimana Container Docker Bekerja?

Diagram di bawah pada dasarnya adalah cara menggunakan Docker. Dan saya berasumsi bahwa, Anda memiliki ide tentang Docker Image dan Dockerfile.

Teman-teman, saya tahu diagramnya terlihat agak rumit, tapi percayalah, tidak terlalu rumit. Di bawah ini adalah penjelasan diagram, bahkan setelah itu Anda merasa sulit untuk memahami, Anda dapat mengomentari keraguan Anda, saya akan menjawab pertanyaan-pertanyaan itu secepatnya.

  • Pengembang pertama-tama akan menulis kode proyek dalam file Docker dan kemudian membangun image dari file itu.
  • Gambar ini akan berisi seluruh kode proyek.
  • Sekarang, Anda dapat menjalankan Image Docker ini untuk membuat kontainer sebanyak yang Anda inginkan.
  • Gambar Docker ini dapat diunggah di hub Docker (Ini pada dasarnya adalah repositori cloud untuk Gambar Docker Anda, Anda dapat menyimpannya untuk publik atau pribadi).
  • Image Docker ini di hub Docker, dapat ditarik oleh tim lain seperti QA atau Prod.

Ini tidak hanya mencegah pemborosan sumber daya, tetapi juga memastikan bahwa lingkungan komputasi yang ada di laptop Pengembang direplikasi di tim lain juga. Saya merasa sekarang, saya tidak perlu memberi tahu Anda mengapa kita membutuhkan Docker.

Ini adalah salah satu cara untuk menggunakannya, saya rasa kalian pasti penasaran untuk mengetahui bagaimana saya menggunakan Docker untuk menyelesaikan masalah microservices saya. Izinkan saya memberi Anda gambaran tentang hal yang sama.

Berikut penjelasan diagramnya:

  • Pertama, kami menulis persyaratan kompleks dalam Dockerfile.
  • Kemudian, kami mendorongnya di GitHub.
  • Setelah itu kami menggunakan server CI (Jenkins).
  • Server Jenkins ini akan menariknya dari Git, dan membangun lingkungan yang tepat. Ini akan digunakan di server Produksi serta di server Pengujian.
  • Kami menerapkannya ke staging (Ini mengacu pada penerapan perangkat lunak Anda ke server untuk tujuan pengujian, sebelum menerapkannya sepenuhnya ke dalam produksi.) Lingkungan untuk Penguji.
  • Pada dasarnya, kami meluncurkan persis apa yang kami miliki dalam Pengembangan, Pengujian, dan Pementasan ke Produksi.

Sebenarnya adil untuk mengatakan bahwa, Docker membuat hidup saya mudah.

Begitulah kisah perusahaan saya, mari kita lihat studi kasus Universitas Indiana. Bagaimana Docker memecahkan masalah mereka.

Studi Kasus Universitas Indiana:

Indiana University adalah sistem universitas negeri multi-kampus di negara bagian Indiana, Amerika Serikat.

Pernyataan masalah

Mereka menggunakan skrip khusus untuk menerapkan aplikasi di VM.

Lingkungan mereka dioptimalkan untuk aplikasi berbasis Java yang lama. Lingkungan mereka yang berkembang melibatkan produk baru yang tidak hanya berbasis java. Untuk memberikan mahasiswa mereka pengalaman terbaik, Universitas perlu mulai memodernisasi aplikasi.

Universitas ingin meningkatkan cara mereka merancang aplikasi, dengan beralih ke arsitektur berbasis layanan mikro untuk aplikasi mereka.

Keamanan diperlukan untuk data siswa seperti SSN dan data kesehatan siswa.

Larutan:

Semua masalah telah diatasi oleh Docker Data Center (DDC), perhatikan diagram di bawah ini:

Registry Tepercaya Docker - Ini menyimpan Gambar Docker.

UI Web UCP (Universal Control Plane) - Membantu dalam mengelola seluruh cluster dari satu tempat. Layanan diterapkan menggunakan UI web UCP, menggunakan image Docker yang disimpan di DTR (Docker Trusted Registry).

Tim operasi TI memanfaatkan Universal Control Plane untuk menyediakan perangkat lunak yang diinstal Docker pada host, dan kemudian menerapkan aplikasi mereka tanpa harus melakukan banyak langkah manual untuk mengatur semua infrastruktur mereka.

UCP dan DTR terintegrasi dengan server LDAP mereka untuk menyediakan akses dengan cepat ke aplikasi mereka.

Saya berharap kalian telah membaca blog sebelumnya untuk mempelajari dasar-dasar Docker.

Sekarang, saya akan menjelaskan kepada Anda bagaimana kita dapat menggunakan Docker Compose untuk aplikasi multi container.

Docker Hands-On:

Saya berasumsi Anda telah menginstal Docker.Saya akan menggunakan Docker Compose dalam posting ini, di bawah ini saya telah memberikan sedikit pengantar tentang Docker Compose.

Docker Compose: Ini adalah alat untuk menentukan dan menjalankan aplikasi Docker multi-container. Dengan Docker Compose, Anda dapat menggunakan file Compose untuk mengonfigurasi layanan aplikasi Anda. Kemudian, dengan menggunakan satu perintah, Anda dapat membuat dan memulai semua layanan dari konfigurasi Anda.

Misalkan Anda memiliki banyak aplikasi dalam berbagai wadah dan semua wadah tersebut ditautkan bersama. Jadi, Anda tidak ingin menjalankan setiap penampung tersebut satu per satu. Namun, Anda ingin menjalankan container tersebut dengan satu perintah. Di situlah Docker Compose berperan. Dengannya Anda dapat menjalankan banyak aplikasi dalam berbagai wadah dengan satu perintah. mis. buruh pelabuhan-menulis.

Contoh: Bayangkan Anda memiliki penampung yang berbeda, satu menjalankan aplikasi web, yang lain menjalankan postgres dan yang lainnya menjalankan redis, dalam file YAML. Itu disebut file penulisan buruh pelabuhan, dari sana Anda dapat menjalankan wadah ini dengan satu perintah.

Mari kita ambil satu contoh lagi:

Misalkan Anda ingin mempublikasikan blog, untuk itu Anda akan menggunakan CMS (Content Management System), dan wordpress adalah CMS yang paling banyak digunakan. Pada dasarnya, Anda memerlukan satu container untuk WordPress dan Anda memerlukan satu container lagi sebagai MySQL untuk back end, container MySQL tersebut harus ditautkan ke container wordpress. Kita juga membutuhkan satu container lagi untuk Php Myadmin yang akan dihubungkan ke database MySQL, yang pada dasarnya digunakan untuk mengakses database MySQL.

Bagaimana kalau saya menjalankan contoh yang disebutkan di atas secara praktis.

Langkah-langkah yang terlibat:

  1. Instal Docker Compose :
  2. Pasang WordPress: Kami akan menggunakan resminya WordPress dan MariaDB Gambar Docker.
  3. Instal MariaDB: Ini adalah salah satu server database paling populer di dunia. Itu dibuat oleh pengembang asli MySQL. MariaDB dikembangkan sebagai perangkat lunak open source dan sebagai database relasional menyediakan antarmuka SQL untuk mengakses data.
  4. Instal PhpMyAdmin: Ini adalah perangkat lunak gratis yang ditulis dalam PHP, dimaksudkan untuk menangani administrasi MySQL melalui Web.
  5. Buat Situs WordPress:

Ayo mulai!

Instal Docker Compose:

Instal Python Pip dulu:

sudo apt-get install python-pip

Sekarang, Anda dapat menginstal Docker Compose:

sudo pip menginstal docker-compose

Instal WordPress:

Buat direktori wordpress:

mkdir wordpress

Masukkan direktori wordpress ini:

cd wordpress /

Di direktori ini buat file Docker Compose YAML, lalu edit menggunakan gedit:

sudo gedit docker-compose.yml

Tempel baris kode di bawah ini di file yaml itu:

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

Saya tahu Anda ingin saya menjelaskan kode ini, jadi apa yang akan saya lakukan, saya akan mengambil bagian kecil dari kode ini dan menjelaskan apa yang terjadi.

wordpress_db: ... lingkungan: MYSQL_ROOT_PASSWORD: edureka ...

Ini akan menetapkan variabel lingkungan di dalam wadah wordpress_db yang disebut MYSQL_ROOT_PASSWORD dengan kata sandi yang Anda inginkan. Image MariaDB Docker dikonfigurasi untuk memeriksa variabel lingkungan ini saat dijalankan dan akan mengatur pengaturan DB dengan akun root dengan kata sandi yang ditentukan sebagai MYSQL_ROOT_PASSWORD.

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

Nomor port pertama adalah nomor port pada host, dan nomor port kedua adalah port di dalam container. Jadi, konfigurasi ini meneruskan permintaan pada port 8080 dari host ke port server web default 80 di dalam container.

phpmyadmin: image: corbinu / docker-phpmyadmin links: - wordpress_db: mysql ports: - 8181: 80 environment: MYSQL_USERNAME: root MYSQL_ROOT_PASSWORD: edureka

Ini mengambil docker-phpmyadmin oleh anggota komunitas corbinu, menautkannya ke wadah wordpress_db kami dengan nama mysql (artinya dari dalam wadah phpmyadmin referensi ke nama host mysql akan diteruskan ke wadah wordpress_db kami), memperlihatkan port 80 pada port 8181 dari sistem host, dan akhirnya menetapkan beberapa variabel lingkungan dengan nama pengguna dan kata sandi MariaDB kami. Gambar ini tidak secara otomatis mengambil variabel lingkungan MYSQL_ROOT_PASSWORD dari lingkungan wordpress_dbcontainer, seperti yang dilakukan oleh gambar wordpress. Kami sebenarnya harus menyalin baris MYSQL_ROOT_PASSWORD: edureka dari wadah wordpress_db, dan mengatur nama pengguna ke root.

Sekarang mulai grup aplikasi:

buruh pelabuhan-menulis up -d

Hanya itu yang harus Anda lakukan. Anda dapat menambahkan kontainer sebanyak yang Anda suka dengan cara ini, dan menghubungkan semuanya sesuka Anda.

Sekarang, di browser, buka port 8080, menggunakan IP publik atau nama host Anda, seperti yang ditunjukkan di bawah ini:

localhost: 8080

Isi formulir ini dan klik instal WordPress.

Setelah selesai, kunjungi lagi alamat IP server Anda (kali ini menggunakan port 8181, mis. Localhost: 8181). Anda akan disambut oleh layar login phpMyAdmin:

Lanjutkan dan login menggunakan root nama pengguna dan kata sandi yang Anda tetapkan di file YAML, dan Anda akan dapat menjelajahi database Anda. Anda akan melihat bahwa server menyertakan database wordpress, yang berisi semua data dari pemasangan WordPress Anda.

Di sini, saya mengakhiri blog Docker Container saya. Saya harap Anda menikmati posting ini. Anda bisa memeriksanya blog lain dalam seri juga, yang berhubungan dengan dasar-dasar Docker.

Jika Anda merasa blog Docker Container ini relevan, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi DevOps Edureka membantu pelajar mendapatkan keahlian dalam berbagai proses dan alat DevOps seperti Puppet, Jenkins, Docker, Nagios, Ansible, Chef, Saltstack, dan GIT untuk mengotomatiskan beberapa langkah di SDLC.

Punya pertanyaan untuk saya? Harap sebutkan di bagian komentar dan saya akan menghubungi Anda kembali.