Perbezaan Antara Imej Docker dan Kontena

1. Gambaran keseluruhan

Docker adalah alat untuk membuat, menyebarkan, dan menjalankan aplikasi dengan mudah. Ini membolehkan kita mengemas aplikasi kita dengan semua pergantungan, dan menyebarkannya sebagai kumpulan individu. Docker menjamin bahawa aplikasi kami akan berjalan dengan cara yang sama pada setiap instance Docker.

Apabila kita mula menggunakan Docker, ada dua konsep utama yang perlu kita jelaskan - gambar dan bekas .

Dalam tutorial ini, kita akan mengetahui apa itu dan bagaimana perbezaannya.

2. Imej Docker

Gambar adalah fail yang mewakili aplikasi yang dikemas dengan semua kebergantungan yang diperlukan untuk berjalan dengan betul. Dengan kata lain, kita dapat mengatakan bahawa gambar Docker adalah seperti kelas Java .

Imej dibina sebagai rangkaian lapisan . Lapisan dipasang di atas satu sama lain. Jadi, apa itu lapisan? Ringkasnya, lapisan adalah gambar.

Katakanlah kita mahu membuat gambar Docker dari aplikasi Hello World Java. Perkara pertama yang perlu kita fikirkan adalah apa yang diperlukan oleh aplikasi kita.

Untuk memulai, ini adalah aplikasi Java, jadi kita akan memerlukan JVM. OK, ini nampak mudah, tetapi apa yang perlu dijalankan oleh JVM? Ia memerlukan Sistem Operasi. Oleh itu, gambar Docker kami akan mempunyai lapisan Sistem Operasi, JVM, dan aplikasi Hello World kami .

Kelebihan utama Docker adalah komuniti besarnya. Sekiranya kita ingin menggunakan gambar, kita boleh pergi ke Docker Hub dan mencari apakah gambar yang kita perlukan ada.

Katakanlah kita mahu membuat pangkalan data, menggunakan pangkalan data PostgreSQL. Kami tidak perlu membuat gambar PostgreSQL baru dari awal. Kami hanya pergi ke Docker Hub, mencari postgres , yang merupakan nama gambar rasmi Docker untuk PostgresSQL, pilih versi yang kami perlukan, dan jalankan.

Setiap gambar yang kami buat atau tarik dari Docker Hub disimpan di sistem fail kami dan dikenal pasti dengan nama dan tegnya. Ia juga dapat dikenali dengan id gambarnya .

Dengan menggunakan arahan gambar pelabuhan , kita dapat melihat senarai gambar yang kita ada di sistem fail kami:

$ 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

Gambar dijalankan menggunakan perintah docker run dengan nama dan tanda gambar. Katakan kita mahu menjalankan gambar 11.6 postgres:

docker run -d postgres:11.6

Perhatikan bahawa kami memberikan pilihan -d . Ini memberitahu Docker untuk menjalankan gambar di latar - juga dikenali sebagai mod terpisah.

Dengan menggunakan perintah docker ps kita dapat memeriksa apakah gambar kita 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 ID CONTAINER dalam output di atas. Mari kita lihat apa itu bekas dan bagaimana kaitannya dengan gambar.

4. Bekas Docker

Bekas adalah contoh gambar. Setiap bekas boleh dikenal pasti dengan IDnya. Kembali ke analogi pengembangan Java kami, kami dapat mengatakan bahawa wadah adalah seperti contoh kelas .

Docker mentakrifkan tujuh negeri untuk bekas: mencipta , memulakan semula , berjalan , mengeluarkan , berhenti , keluar , dan mati . Ini penting untuk diketahui. Oleh kerana bekas hanyalah contoh gambar, ia tidak perlu dijalankan.

Sekarang mari kita fikirkan semula arahan run yang telah kita lihat di atas. Kami mengatakan bahawa ia digunakan untuk menjalankan gambar, tetapi itu tidak sepenuhnya tepat. Yang benar adalah bahawa perintah run digunakan untuk membuat dan memulakan wadah baru gambar.

Satu kelebihan besar ialah bekas seperti VM ringan. Tingkah laku mereka benar-benar terasing antara satu sama lain. Ini bermaksud bahawa kita dapat menjalankan beberapa bekas dengan gambar yang sama, masing-masing dalam keadaan yang berbeza dengan data yang berbeza dan ID yang berbeza.

Mampu menjalankan beberapa bekas gambar yang sama pada masa yang sama adalah kelebihan yang besar kerana ia membolehkan kita menggunakan kaedah penskalaan yang mudah. Sebagai contoh, mari kita fikirkan tentang perkhidmatan mikro. Sekiranya setiap perkhidmatan dikemas sebagai gambar Docker, maka itu bermaksud bahawa perkhidmatan baru dapat digunakan sebagai wadah berdasarkan permintaan.

5. Kitaran Hidup Kontena

Sebelumnya, kami telah menyebut tujuh keadaan wadah, Sekarang, mari kita lihat bagaimana kita dapat menggunakan alat baris perintah docker untuk memproses keadaan kitaran hidup yang berbeza.

Memulakan bekas baru memerlukan kita membuatnya dan kemudian memulakannya . Ini bermaksud bahawa ia harus melalui keadaan membuat sebelum dapat berjalan. Kita boleh melakukannya dengan membuat dan memulakan bekas secara eksplisit:

docker container create : docker container start 

Atau kita boleh melakukannya dengan mudah dengan perintah run :

docker run :

Kita boleh menjeda bekas yang sedang berjalan dan kemudian meletakkannya semula pada keadaan berjalan:

docker pause  docker unpause 

Bekas yang dijeda akan menunjukkan "Dijeda" sebagai status ketika kami memeriksa prosesnya:

$ 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 boleh menghentikan bekas yang sedang berjalan dan kemudian jalankan semula:

docker stop  docker start 

Dan akhirnya, kita boleh mengeluarkan bekas:

docker container rm 

Hanya kontena dalam keadaan berhenti atau dibuat yang boleh dikeluarkan.

Untuk maklumat lebih lanjut mengenai perintah Docker, kita dapat merujuk pada Rujukan Garis Perintah Docker.

6. Kesimpulannya

Dalam artikel ini, kami membincangkan gambar dan bekas Docker dan bagaimana perbezaannya. Gambar menerangkan aplikasinya dan bagaimana ia dapat dijalankan. Wadah adalah contoh gambar, di mana beberapa bekas gambar yang sama dapat dijalankan, masing-masing dalam keadaan yang berbeza.

Kami juga telah membicarakan kitaran hidup kontena dan mempelajari arahan asas untuk menguruskannya.

Sekarang setelah kita mengetahui asasnya, inilah masanya untuk mempelajari lebih lanjut mengenai dunia Docker yang menarik dan mula meningkatkan pengetahuan kita!