Panduan container Linux: Pengenalan tentang container

click fraud protection

Kontainer telah menjadi kata kunci selama bertahun-tahun... tapi apa sebenarnya itu?

Kontainer adalah metode menjalankan aplikasi tervirtualisasi di komputer Anda, mirip dengan mesin virtual, namun menggunakan serangkaian teknologi dasar yang berbeda. Mereka mungkin rumit untuk dipahami, tetapi mereka penting untuk menjalankan semuanya Minecraft server ke Google. Dan kami akan menunjukkan cara menyiapkannya.

Kami akan menggunakan Linux, sistem operasi yang dibangun dengan fokus pada portabilitas, modularitas, dan stabilitas. Linux ada dalam segala hal mulai dari server, microwave, hingga konsol video game. Kontainer tidak terbatas pada berjalan di Linux, namun teknologi di baliknya paling cocok dan berjalan paling baik di Linux. Jika Anda baru mengenal Linux, kami sarankan Anda memeriksa panduan pemula sebelum menyelam.

Apakah container merupakan mesin virtual?

Kontainer bisa menjadi topik yang kompleks, namun yang terbaik adalah memulai dengan satu poin penting: Kontainer adalah topiknya

bukan sebuah mesin virtual. Mesin virtual adalah versi simulasi perangkat keras tertentu dan perangkat lunaknya yang berjalan di apa yang disebut hypervisor. Jika Anda pernah menggunakan perangkat lunak seperti VirtualBox atau multipass, maka Anda telah menggunakan hypervisor.

Hypervisor biasanya berjalan sebagai sistem operasinya sendiri (dikenal sebagai hypervisor tipe 1) atau dalam batasan sistem operasi lain seperti Windows atau Ubuntu (hypervisor tipe 2). Tanggung jawab hypervisor adalah menyajikan sistem operasi tamu dengan perangkat keras simulasi yang diperlukan untuk dijalankan. Sistem operasi lengkap kemudian dapat berjalan di atas. Ini mencakup semuanya, mulai dari simulasi CPU dan RAM hingga bus data, drive disk, atau adaptor jaringan. Simulasi ini mahal secara komputasi, sehingga mesin virtual biasanya mempunyai overhead yang signifikan.

Jadi, apa itu wadah?

Kontainer mirip dengan mesin virtual yang berisi dan menjalankan perangkat lunak dalam lingkungan terisolasi pada sistem host. Namun, container menggantikan virtualisasi perangkat keras tradisional dengan mengandalkan sistem operasi host secara langsung. Kontainer berbagi perpustakaan dan biner dari sistem operasi host dan hanya memiliki sumber daya dan dependensi yang diperlukan untuk menjalankan aplikasi spesifik yang ada di dalamnya. Artinya, tidak diperlukan sistem operasi lengkap per container, karena semua container berjalan di a sistem dapat berbagi sistem operasi host tunggal sambil mempertahankan pemisahan yang Anda dapatkan dengan virtual mesin.

Kontainer mengakses sistem operasi host melalui mesin kontainer, yang mengelola kontainer yang sedang berjalan dan mengontrol aksesnya ke sistem operasi yang mendasarinya. Hal ini mungkin termasuk menegakkan keamanan antar container dan memberikan atau menolak akses ke file sistem operasi atau koneksi jaringan.

Apa sajakah pengorbanan dalam menggunakan kontainer?

Meskipun mesin virtual dan container serupa, penggunaan container memiliki kekurangan. Pertama, mesin virtual dianggap lebih aman, karena permukaan serangan untuk "melarikan diri" dari mesin virtual jauh lebih kecil dan lebih sulit ditembus. Misalnya, sebuah container mungkin tidak cocok untuk menguji malware.

Keuntungan utama menggunakan container adalah bobotnya yang ringan, menghindari kebutuhan untuk memvirtualisasikan seluruh sistem operasi berarti waktu startup yang minimal dan pengurangan overhead sistem. Ini berarti lebih banyak container dapat berjalan di satu host, yang tidak mungkin dilakukan dengan mesin virtual.

Karena container tidak memerlukan sistem operasi lengkap, container dapat dengan mudah dikemas menjadi gambar yang lebih kecil dan didistribusikan. Meskipun image mesin virtual lengkap mungkin berukuran puluhan gigabyte, container dapat berupa image sekecil 15Kb. Hal ini membuatnya sangat mudah untuk mendistribusikan dan menggunakan wadah. Kami akan mendemonstrasikannya dengan menjalankan beberapa contoh container sederhana di Docker.

Menginstal Docker

Banyak sekali teorinya, jadi mari kita praktikkan. Untuk menunjukkan kepada Anda cara menyiapkan container, kami akan menginstal Docker di Ubuntu 23.10 dan menggunakannya untuk menjalankan container Hello World sederhana. Langkah-langkah kami diuji pada mesin virtual, tetapi Anda juga dapat melakukan dual-boot dari PC Windows atau menggunakan a laptop bagus untuk Linux.

Docker dengan cepat menjadi alat containerisasi de facto. Meskipun alat lain memang ada, Docker diadopsi secara luas dan sempurna untuk semua aplikasi kecuali aplikasi yang paling menuntut. Ada dokumentasi tentang berbagai cara menginstal Docker, tapi kami akan menggunakan skrip pemasangan praktis. Perintah ini akan mengunduh skrip dari get.docker.com ke mesin lokal Anda:

$ curl -fsSL https://get.docker.com -o get-docker.sh

Anda kemudian dapat menjalankan skrip ini untuk menginstal Docker. Anda dapat memverifikasi bahwa Docker diinstal dengan benar dengan memeriksa versinya dengan:

$ sudo sh ./get-docker.sh

Diikuti dengan pemeriksaan versi dengan:

$ sudo docker version

Anda juga dapat memverifikasi bahwa layanan buruh pelabuhan berjalan di latar belakang dengan:

$ sudo systemctl status docker

Ini harus menunjukkan 'aktif (berjalan)' dalam teks hijau, seperti yang disorot pada gambar di bawah. Versi mesin Docker juga harus dicetak tanpa kesalahan.

Menjalankan contoh sederhana

Sekarang Docker telah diinstal, Anda dapat menggunakannya untuk mengunduh image container. Gambar kontainer sangat mirip dengan ISO untuk mesin virtual, hanya saja biasanya lebih kecil dan lebih mudah dibuat. Unduh gambar kontainer hello-world sederhana dengan perintah berikut:

$ sudo docker pull hello-world

Setelah gambar tersebut diunduh, Anda dapat memverifikasi dengan mencantumkan gambar yang diunduh di sistem Anda menggunakan yang berikut ini:

$ sudo docker images

Anda sekarang akan melihat hello-world diunduh. Perhatikan ukurannya yang sangat kecil (13Kb pada mesin pengujian kami), serta tagnya. Tag suatu gambar secara efektif adalah versinya. Secara default, Docker akan mengunduh image versi terbaru. Jalankan wadah berdasarkan gambar ini menggunakan:

$ sudo docker run hello-world: latest

Ini akan menampilkan omongan hello-world Dockers, yang dijalankan dari program C yang sangat kecil (yang dapat Anda periksa GitHub).

Selamat; Anda telah menjalankan container pertama Anda! Dalam hal ini, program telah mengeluarkan hasilnya dan menyelesaikan eksekusinya. Kontainer tersebut sekarang sudah mati dan tidak lagi berjalan.

Bagaimana menjaga kontainer tetap hidup

Setelah menjalankan container dasar, kini kita dapat membuat contoh yang lebih kompleks yang tidak langsung keluar setelah tugas selesai. Kontainer sering kali dibangun berdasarkan satu proses, yang mungkin menghasilkan lebih banyak proses. Setelah proses dasar ini keluar, seluruh container akan keluar bersamanya. Ini mungkin terdengar seperti batasan, tetapi sebenarnya sangat mirip dengan bagaimana sistem init dalam fungsi kernel Linux penuh.

Untuk menjalankan contoh yang persisten, kita dapat mengambil gambar untuk Nginx, yang merupakan server web yang digunakan untuk menampung sebagian besar situs web di dunia. Kami memilih Nginx untuk contoh ini karena sederhana, tidak memerlukan konfigurasi lanjutan, dan ringan. Download image Nginx terbaru dengan perintah berikut:

$ sudo docker pull nginx

Kami telah menambahkan -P tandai di sini untuk mengonfigurasi penerusan port dari kontainer ke sistem operasi host. Port 80 digunakan untuk lalu lintas HTTP (yaitu web) yang tidak terenkripsi. Ini akan memungkinkan Anda mengakses kontainer dari mesin host Anda:

$ sudo docker run -p 80:80 nginx

Perintah ini akan dijalankan di terminal Anda dalam mode terlampir yang berarti container tersebut benar-benar terpasang ke terminal Anda, sehingga semua log dari container akan dicetak di sana. Setelah wadah mulai menyala, buka http://localhost di peramban web Anda. Anda akan melihat layar selamat datang Nginx seperti di bawah ini:

Kontainer Nginx sekarang berjalan di dalam mesin kontainer Anda. Meskipun Nginx berjalan dalam mode terlampir, Nginx hanya akan terus berjalan selama terbuka. Anda dapat keluar dari container Nginx dengan menekan Ctrl + C di terminal Anda.

Cara menjalankan container di latar belakang

Untuk menjalankan Nginx di latar belakang, kami akan menambahkan flag lain, -D, untuk mode terpisah. Ini akan memulai penampung terlepas dari terminal Anda, artinya penampung berada di latar belakang. Misalnya:

$ sudo docker run -d -p 80:80 nginx

Anda dapat membuat daftar container yang sedang berjalan pada suatu sistem. Perhatikan bagaimana container Nginx Anda sekarang berjalan di latar belakang dan telah diberi ID.

$ sudo docker ps

Kontainer latar belakang yang sedang berjalan dapat dimatikan menggunakan ID-nya. Anda mungkin juga memperhatikan bahwa wadah tersebut telah diberi nama. Jika salah satu tidak ditentukan, Docker akan memberi setiap container nama unik dan acak.

$ sudo docker kill 

Namun, Anda dapat mengujinya dengan beberapa gambar yang lebih menarik. Ada banyak tersedia di hub buruh pelabuhan, yang berfungsi sebagai repositori pusat untuk gambar kontainer publik.

Menyelam lebih dalam dengan kontainer

Ini adalah pengenalan singkat tentang kontainer. Kontainer bisa jadi sangat rumit, namun mereka adalah fondasi dasar dari sistem terdistribusi yang menjalankan sebagian besar internet modern kita. Namun, kekuatan tersebut tidak mengurangi penggunaannya dalam skala yang lebih kecil. Keakraban dengan dasar-dasar container dan Docker dapat menjadi pintu gerbang untuk menjalankan layanan lokal yang berguna seperti a Server Minecraft atau Plex di PC lama.