Docker - Kontainer dan Hosts

Hai, para penggemar teknologi yang bersemangat! Saya sangat senang untuk memulai perjalanan Docker bersama Anda. Sebagai guru maya yang memiliki tahun-tahun pengalaman, saya akan memandu Anda melalui dunia menarik kontainer dan host. Jangan khawatir jika Anda baru dalam programming – kita akan mulai dari dasar dan membangun langkah demi langkah. Ayo masuk ke dalam!

Docker - Container & Hosts

Docker Images

Bayangkan Anda sedang menyiapkan barang untuk perjalanan. Anda akan membuat daftar semua yang Anda butuhkan, kan? Itu tepatnya apa yang disebut Docker image – blueprin dari semua yang diperlukan sebuah kontainer untuk berjalan. Itu seperti resep untuk aplikasi Anda, termasuk kode, runtime, pustaka, dan tools sistem.

Membuat Docker Image Pertama Anda

Ayo membuat Docker image sederhana untuk sebuah aplikasi "Hello, World!":

# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "hello.py"]

mari kitauraikan ini:

  1. FROM python:3.9-slim: Ini seperti mengatakan, "Saya ingin memulai dengan lingkungan Python 3.9 minimal."
  2. WORKDIR /app: Kita menyiapkan ruang kerja, seperti membuat folder baru untuk proyek kita.
  3. COPY . /app: Kita menyalin file lokal kita ke dalam kontainer.
  4. CMD ["python", "hello.py"]: Ini adalah perintah yang akan dijalankan saat kita memulai kontainer.

Untuk membangun image ini, kita akan menjalankan:

docker build -t my-hello-world .

Menjalankan Kontainer

Sekarang kita memiliki image kita, mari kita hidupkan itu! Menjalankan sebuah kontainer adalah seperti memulai sebuah komputer virtual yang sudah terisi aplikasi Anda.

Menjalankan Kontainer Dasar

docker run my-hello-world

Perintah ini akan memulai sebuah kontainer berdasarkan image my-hello-world dan menjalankan skrip hello.py.

Mode Interaktif

kadang-kadang, Anda ingin berinteraksi dengan kontainer Anda. Itu seperti membuka terminal secara langsung di dalam kontainer:

docker run -it my-hello-world /bin/bash

Flag -it membuat kontainer interaktif, dan /bin/bash memulai shell bash.

Menampilkan Semua Kontainer

Saat Anda bekerja dengan Docker, Anda akan membuat banyak kontainer. Penting untuk memantau mereka. Pahami ini sebagai memeriksa aplikasi mana yang sedang berjalan di komputer Anda.

docker ps

Perintah ini menampilkan semua kontainer yang sedang berjalan. Untuk melihat semua kontainer, termasuk yang telah berhenti:

docker ps -a

Berikut adalah tabel yang praktis dari opsi docker ps:

Opsi Deskripsi
-a, --all Tampilkan semua kontainer (default menampilkan yang sedang berjalan saja)
-q, --quiet Hanya tampilkan ID kontainer
-s, --size Tampilkan ukuran file total
--format Cetak kontainer secara indah menggunakan template Go

Menghentikan Kontainer

Seperti menutup aplikasi di komputer Anda, Anda dapat menghentikan kontainer Docker saat Anda selesai menggunakannya.

Menghentikan Dengan hormat

docker stop <container_id>

Ini mengirimkan sinyal SIGTERM, memungkinkan kontainer untuk berhenti secara hormat.

Menghentikan Dengan Paksa

docker kill <container_id>

Ini seperti memaksakan penutupan aplikasi. Gunakan ini saat docker stop tidak bekerja.

Menghapus Kontainer

Setelah menghentikan kontainer, Anda mungkin ingin menghapusnya sepenuhnya:

docker rm <container_id>

Tips Pro: Anda dapat menggabungkan penghentian dan penghapusan dalam satu perintah:

docker rm -f <container_id>

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dunia kontainer dan host Docker. Ingat, bekerja dengan Docker adalah seperti mengelola armada komputer kecil, spesialis. Setiap kontainer adalah lingkungan terpisah, siap menjalankan aplikasi Anda secara konsisten di mana saja.

Sementara itu, ini adalah analogi yang menyenangkan: kontainer Docker adalah seperti food truck. Setiap truk (kontainer) memiliki semua yang diperlukan untuk membuat dan melayani spesialisnya (menjalankan aplikasi Anda). Anda dapat mudah memindahkan truk ini, memulainya, atau menutupnya sesuai kebutuhan.

Dalam les kita berikutnya, kita akan mendalami jaringan dan persistensi data Docker. Sampai jumpa, semangat menkontainer!

Credits: Image by storyset