Perbedaan Antara Gambar Docker dan Kontainer

1. Ikhtisar

Docker adalah alat untuk membuat, menerapkan, dan menjalankan aplikasi dengan mudah. Ini memungkinkan kita untuk mengemas aplikasi kita dengan semua dependensi, dan mendistribusikannya sebagai bundel individual. Docker menjamin bahwa aplikasi kita akan berjalan dengan cara yang sama di setiap instance Docker.

Saat kami mulai menggunakan Docker, ada dua konsep utama yang perlu kami perjelas - gambar dan kontainer .

Dalam tutorial ini, kita akan mempelajari apa itu dan bagaimana perbedaannya.

2. Gambar Docker

Gambar adalah file yang mewakili aplikasi yang dikemas dengan semua dependensi yang diperlukan untuk berjalan dengan benar. Dengan kata lain, kita dapat mengatakan bahwa image Docker seperti kelas Java .

Gambar dibuat sebagai rangkaian lapisan . Lapisan dipasang di atas satu sama lain. Jadi, apa itu lapisan? Sederhananya, lapisan adalah gambar.

Katakanlah kita ingin membuat image Docker dari aplikasi Java Hello World. Hal pertama yang perlu kita pikirkan adalah apa yang dibutuhkan aplikasi kita.

Untuk memulai, ini adalah aplikasi Java, jadi kita membutuhkan JVM. Oke, ini tampaknya mudah, tetapi JVM apa yang dibutuhkan untuk menjalankan? Ini membutuhkan Sistem Operasi. Oleh karena itu, image Docker kami akan memiliki lapisan Sistem Operasi, JVM, dan aplikasi Hello World kami .

Keuntungan utama Docker adalah komunitasnya yang besar. Jika kita ingin membangun sebuah image, kita bisa pergi ke Docker Hub dan mencari jika image yang kita butuhkan tersedia.

Katakanlah kita ingin membuat database, menggunakan database PostgreSQL. Kami tidak perlu membuat gambar PostgreSQL baru dari awal. Kami hanya pergi ke Docker Hub, mencari postgres , yang merupakan nama gambar resmi Docker untuk PostgresSQL, pilih versi yang kami butuhkan, dan jalankan.

Setiap gambar yang kami buat atau tarik dari Docker Hub disimpan di sistem file kami dan diidentifikasi dengan nama dan tagnya. Itu juga dapat diidentifikasi dengan id gambarnya .

Dengan menggunakan perintah gambar buruh pelabuhan , kita dapat melihat daftar gambar yang tersedia di sistem file kita:

$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE postgres 11.6 d3d96b1e5d48 4 weeks ago 332MB mongo latest 9979235fc504 6 weeks ago 364MB rabbitmq 3-management 44c4867e4a8b 8 weeks ago 180MB mysql 8.0.18 d435eee2caa5 2 months ago 456MB jboss/wildfly 18.0.1.Final bfc71fe5d7d1 2 months ago 757MB flyway/flyway 6.0.8 0c11020ffd69 3 months ago 247MB java 8-jre e44d62cf8862 3 years ago 311MB

3. Menjalankan Gambar Docker

Sebuah gambar dijalankan menggunakan perintah jalankan buruh pelabuhan dengan nama gambar dan tag. Katakanlah kita ingin menjalankan gambar postgres 11.6:

docker run -d postgres:11.6

Perhatikan bahwa kami menyediakan opsi -d . Ini memberi tahu Docker untuk menjalankan gambar di latar belakang - juga dikenal sebagai mode terlepas.

Dengan menggunakan perintah docker ps kita dapat memeriksa apakah gambar kita sedang berjalan, kita harus menggunakan perintah ini:

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3376143f0991 postgres:11.6 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 5432/tcp tender_heyrovsky

Perhatikan CONTAINER ID pada keluaran di atas. Mari kita lihat apa itu container dan bagaimana kaitannya dengan gambar.

4. Kontainer Docker

Wadah adalah contoh gambar. Setiap wadah dapat diidentifikasi dengan ID-nya. Kembali ke analogi pengembangan Java kita, kita dapat mengatakan bahwa container seperti instance kelas .

Docker mendefinisikan tujuh status untuk sebuah kontainer: dibuat , dimulai ulang , dijalankan , dihapus , dijeda , keluar , dan mati . Ini penting untuk diketahui. Karena wadah hanyalah sebuah contoh dari gambar, itu tidak perlu dijalankan.

Sekarang mari kita pikirkan kembali tentang perintah run yang telah kita lihat di atas. Kami telah mengatakan ini digunakan untuk menjalankan gambar, tetapi itu tidak sepenuhnya akurat. Yang benar adalah bahwa perintah run digunakan untuk membuat dan memulai container baru dari image.

Satu keuntungan besar adalah container seperti VM yang ringan. Perilaku mereka benar-benar terisolasi satu sama lain. Ini berarti kita dapat menjalankan beberapa kontainer dengan gambar yang sama, masing-masing memiliki status berbeda dengan data berbeda dan ID berbeda.

Mampu menjalankan banyak kontainer dari gambar yang sama pada waktu yang sama merupakan keuntungan besar karena memungkinkan kami cara mudah untuk menskalakan aplikasi. Misalnya, mari pikirkan tentang layanan mikro. Jika setiap layanan dikemas sebagai image Docker, itu berarti bahwa layanan baru dapat diterapkan sebagai container sesuai permintaan.

5. Siklus Hidup Kontainer

Sebelumnya, kami menyebutkan tujuh status wadah, Sekarang, mari kita lihat bagaimana kita dapat menggunakan alat baris perintah buruh pelabuhan untuk memproses status siklus hidup yang berbeda.

Memulai penampung baru mengharuskan kita untuk membuatnya dan kemudian memulainya . Ini berarti ia harus melalui keadaan buat sebelum dapat dijalankan. Kita dapat melakukan ini dengan membuat dan memulai penampung secara eksplisit:

docker container create : docker container start 

Atau kita dapat dengan mudah melakukan ini dengan perintah run :

docker run :

Kita dapat menjeda container yang sedang berjalan dan kemudian menjalankannya kembali:

docker pause  docker unpause 

Penampung yang dijeda akan menampilkan "Dijeda" sebagai status ketika kami memeriksa proses:

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9bef2edcad7b postgres:11.6 "docker-entrypoint.s…" 5 minutes ago Up 4 minutes (Paused) 5432/tcp tender_heyrovsky

Kami juga dapat menghentikan kontainer yang sedang berjalan dan kemudian menjalankannya kembali:

docker stop  docker start 

Dan akhirnya, kami dapat menghapus wadah:

docker container rm 

Hanya penampung dalam status dihentikan atau dibuat yang dapat dihapus.

Untuk informasi lebih lanjut mengenai perintah Docker, kita dapat merujuk ke Referensi Baris Perintah Docker.

6. Kesimpulan

Pada artikel ini, kami membahas image dan container Docker serta perbedaannya. Gambar menjelaskan aplikasi dan cara menjalankannya. Penampung adalah contoh gambar, di mana beberapa penampung dari gambar yang sama dapat dijalankan, masing-masing dalam keadaan berbeda.

Kami juga telah berbicara tentang siklus hidup kontainer dan mempelajari perintah dasar untuk mengelolanya.

Sekarang setelah kita mengetahui dasar-dasarnya, inilah waktunya untuk mempelajari lebih lanjut tentang dunia Docker yang menarik dan mulai meningkatkan pengetahuan kita!