Apa itu Docker?

Selesai

Sebelum memulai tur cepat kontainer Docker, mari kita lihat bagaimana tim kami mengembangkan dan menyebarkan aplikasi. Kami juga akan menjelaskan secara singkat beberapa tantangan yang dihadapi tim kami.

Proses pengembangan dan pengelolaan aplikasi di perusahaan Anda biasanya mencakup satu tim atau lebih. Ada tim pengembangan yang membuat perangkat lunak dan tim operasi yang bertanggung jawab untuk menyebarkan aplikasi ini. Tim operasi juga bertanggung jawab untuk mengelola infrastruktur hosting aplikasi.

Misalnya, asumsikan kami mengembangkan portal pelacakan pesanan untuk berbagai outlet perusahaan kami untuk digunakan. Beberapa lingkungan menghosting aplikasi kami selama proses pengembangan dan penerbitan aplikasi. Pertama, tim pengembangan mengembangkan dan menguji perangkat lunak dalam lingkungan pengembangan. Dari sini, perangkat lunak kemudian disebarkan ke lingkungan quality assurance (QA), diikuti oleh pra-produksi, dan lingkungan produksi akhir.

Ada beberapa tantangan yang perlu kita pertimbangkan dalam skenario sebelumnya:

  • Mengelola lingkungan hosting

    Lingkungan yang berbeda semua membutuhkan manajemen perangkat lunak dan perangkat keras. Kita harus memastikan bahwa perangkat lunak yang diinstal dan perangkat keras yang dikonfigurasi di masing-masing adalah sama. Kita juga perlu mengonfigurasi aspek-aspek seperti akses jaringan, penyimpanan data, dan keamanan per lingkungan secara konsisten dan mudah direproduksi.

  • Kelangsungan dalam pengiriman perangkat lunak

    Menyebarkan aplikasi ke lingkungan kita harus terjadi secara konsisten. Setiap paket penyebaran harus mencakup semua paket sistem, biner, pustaka, file konfigurasi, dan item lain yang memastikan aplikasi yang berfungsi penuh. Kita juga perlu memastikan bahwa semua dependensi ini cocok dengan versi perangkat lunak dan arsitektur.

  • Penggunaan perangkat keras yang efisien

    Setiap aplikasi yang digunakan harus dijalankan sedemikian rupa sehingga terisolasi dari aplikasi lain yang berjalan pada perangkat keras yang sama. Kami bertujuan untuk menjalankan lebih dari satu aplikasi per server untuk memanfaatkan sumber daya dengan sebaik-baiknya tanpa mengorbankan satu sama lain.

  • Portabilitas aplikasi

    Ada beberapa alasan mengapa portabilitas aplikasi sangat penting. Lingkungan hosting mungkin gagal, atau kita mungkin perlu menskalakan aplikasi kita. Dalam kedua kasus, hasil potensial adalah menyebarkan ulang perangkat lunak kami ke lingkungan baru. Kami ingin memindahkan perangkat lunak dari satu host ke host lain, bahkan jika infrastruktur yang mendasar berbeda. Langkah seperti itu perlu terjadi secepat mungkin untuk mengurangi waktu henti bagi pelanggan kami.

Sebelum kita melihat fitur Docker yang membantu menyelesaikan tantangan ini, kita akan membahas beberapa konsep dan melihat ikhtisar singkat arsitektur Docker.

Apa itu kontainer?

Kontainer adalah lingkungan yang terisolasi secara longgar yang memungkinkan kami untuk membangun dan menjalankan paket perangkat lunak. Paket perangkat lunak ini mencakup kode dan semua dependensi untuk menjalankan aplikasi dengan cepat dan andal pada lingkungan komputasi apa pun. Kami menyebut paket ini gambar kontainer.

Gambar kontainer menjadi unit yang kami gunakan untuk mendistribusikan aplikasi kami.

Apa itu kontainerisasi perangkat lunak?

Kontainerisasi perangkat lunak adalah metode virtualisasi OS yang digunakan untuk menyebarkan dan menjalankan kontainer tanpa menggunakan komputer virtual (VM). Kontainer dapat berjalan pada perangkat keras fisik, di cloud, pada VM, dan di beberapa sistem operasi.

Apa itu Docker?

Docker adalah platform kontainerisasi yang digunakan untuk mengembangkan, mengirim, dan menjalankan kontainer. Docker tidak menggunakan hypervisor, dan Anda dapat menjalankan Docker di desktop atau laptop Anda jika Anda sedang mengembangkan dan menguji aplikasi. Docker versi desktop mendukung Linux, Windows, dan macOS. Untuk sistem produksi, Docker tersedia untuk lingkungan server, termasuk banyak varian Linux dan Microsoft Windows Server 2016 ke atas. Banyak Cloud, termasuk Azure, mendukung Docker.

Arsitektur Docker

Platform Docker terdiri dari beberapa komponen yang kami gunakan untuk membangun, menjalankan, dan mengelola aplikasi kontainer kami.

Mesin Docker

Docker Engine terdiri dari beberapa komponen yang dikonfigurasi sebagai implementasi klien-server di mana klien dan server berjalan secara bersamaan pada host yang sama. Klien berkomunikasi dengan server menggunakan REST API, yang memungkinkan klien juga berkomunikasi dengan server jarak jauh yang instans.

Diagram memperlihatkan gambaran umum tingkat tinggi tentang arsitektur Docker.

Beberapa panah memperlihatkan komunikasi antara Server Docker, menjalankan Kontainer, dan gambar kontainer yang disimpan. Panah ini menunjukkan bagaimana server Docker memuat gambar kontainer yang disimpan dan mengelola kontainer yang sedang berjalan.

Klien Docker

Ada dua alternatif untuk klien Docker: Aplikasi baris perintah bernama docker, atau aplikasi berbasis Antarmuka Pengguna Grafis (GUI) yang disebut Docker Desktop. CLI dan Docker Desktop berinteraksi dengan server Docker. docker Perintah dari CLI atau Docker Desktop menggunakan Docker REST API untuk mengirim instruksi ke server lokal atau jarak jauh dan fungsi sebagai antarmuka utama yang kami gunakan untuk mengelola kontainer kami.

Server Docker

Server Docker adalah daemon bernama dockerd. dockerd Daemon menanggapi permintaan klien melalui Docker REST API dan dapat berinteraksi dengan daemon lain. Server Docker juga bertanggung jawab untuk melacak siklus hidup kontainer kami.

Objek Docker

Ada beberapa objek yang akan Anda buat dan konfigurasikan untuk mendukung penyebaran kontainer Anda. Ini termasuk jaringan, volume penyimpanan, plugin, dan objek layanan lainnya. Kami tidak akan membahas semua objek ini di sini, tetapi ada baiknya untuk diingat bahwa objek-objek ini adalah item yang dapat kita buat dan sebarkan sesuai kebutuhan.

Docker Hub

Docker Hub adalah registri Perangkat Lunak sebagai Layanan (SaaS) kontainer Docker. Registri Docker adalah repositori yang kami gunakan untuk menyimpan dan mendistribusikan gambar kontainer yang kami buat. Docker Hub adalah registri publik default yang digunakan Docker untuk manajemen gambar.

Ingat bahwa Anda dapat membuat dan menggunakan registri Docker pribadi atau menggunakan salah satu dari banyak opsi penyedia cloud yang tersedia. Misalnya, Anda dapat menggunakan Azure Container Registry untuk menyimpan citra kontainer untuk digunakan dalam beberapa layanan yang didukung kontainer Azure.